Hi Bugbyte!!! Any news of this proyect?
If you've been following this thread, you know that I've set aside the issue of controlling the iPhone from a touchscreen and been working on one of the other problems - getting the iPhone to interact with external devices. Things like OBDII and GPS and Fusion Brain and XM Direct.
The solution I've been pursuing uses an inexpensive piece of hardware called a Sheeva Plug. The Sheeva Plug is a small and not very powerful Linux processor that is completely self contained in a small box. It can be modified to run on car power and only consumes 6 watts. The main advantage of the Sheeva over the iPhone is that it runs a straight Linux operating system and has a USB port and an ethernet port. That's the key. It can be connected to devices that have USB cables on them and it can access the internet.
It's been quite an uphill struggle for me to learn Linux and figure out how to configure the plug to recognize even simple devices such as a GPS. However, thanks to massive help from some of the Linux gurus on this forum (Chunkyks, PaulF, Kev000 among others), I have been able to set up the Sheeva to recognize my standard GPS and can now query it using a Linux program called gpsd.
So what? Well, combined with the ethernet access, I can now query my GPS from my iPhone. At first, I was able to query it using my local WiFi router in my house. However, I was able to quickly expand that to query the GPS from outside my home network. I can now access my GPS information from anywhere in the world.
And you can too. Try it by typing the following into your browser: http://220.127.116.11/gpsd2.php Go ahead, I'll wait.
What you will get back is a small script that reports the current status of the GPS device. You can access it on your iPhone or any smart phone device with a standard web browser. What's happening is the Sheeva has a little web server set up on it and is running a script called gpsd.php that assembles all the information and ships it to your browser.
A more full featured script that came with gpsd is also on the plug. You can view it here: http://18.104.22.168/gpsd.php
Again, so what? I mean, doesn't the iPhone already have a GPS? Of course it does. This is simply a proof of concept. I need the gps in order for it to work with obdgpslogger, a Linux program by Chunkyks that interfaces with your car's OBDII system and records values from the engine (using a standard USB device such as an OBDPROS interface), gets the location data from the gps and logs the information to a file. You can query the program to get you information such as rpms, coolant temperatures and so forth.
I've developed the gps idea a little bit and built a script on the Sheeva that you could pull up on your iPhone that would display your speed on a digital speedometer. It needs work, but here's what it looks like: http://22.214.171.124/speedo2.html
The concept is that one can build a web based interface to your car, store it on the Sheeva plug, put the Sheeva and a WiFi router in the car, plug a WiFi dongle into the Sheeva and access that web interface stored on the Sheeva.
BUT - and here's where it starts to get really cool, you don't really have to store those web pages on the Sheeva. You can store them out on the internet somewhere. Your iPhone has WiFi and 3G access to the net pretty much continuously, so why deal with constantly updating your Sheeva plug with new interfaces as you improve your web access? Why not build a web interface out on a web site on the net and access THOSE pages as you drive around?
Not only that, but you'd be able to upload data from the car, like engine information, position, what song you're listening to and so forth. People with good web programming skills could add modules that could do really interesting things, you could link into them on your web page, incorporate them into your interface and use them the next time you get into the car.
Like what kinds of things? Oh...I dunno...how about a service that checks to see if your car is running (which it would know if your phone is connected to the net and sending engine information) and takes forwarded emails, translates them into audio files and sends them to your phone so you can hear them? And maybe allows you to record a response, uploads that to the web, translates it into text and forwards the email?
Stuff like that.
I think the new paradigm in car computing is no longer device focused but location focused. It uses a fusion of in car hardware and internet software and services to deliver user customized content.
I think of it as a "CloudCar".
So, okay, back to reality. Where am I with this project? Right now, I'm going to work on ensuring that the system works with a USB hub and multiple devices. I'm going to finish my GPS script so that it updates the screen over and over rather then just once. Then, I'm going to try and control a Fusion Brain from the Sheeva with my iPhone as the controller to show that I can do this over a network. Maybe I'll interface a temperature sensor as a way to show feedback. I'll also see if I can get the Sheeva to recognize my OBDPROS device so I can actually log data to my Sheeva using obd2gps.
That should keep me busy for awhile.
And can I use this to upload my gps tracks from my iphone, rather than the carpc? if so, what do i need to get started.
That will certainly be possible. The GPS in my car is more accurate than the GPS in my iPhone. I'll have all of my track info on my Sheeva plug, recorded to a database. There's no reason I can't use my iPhone to upload that data.
In fact, if I give it a little thought, one test application that would prove the concept might be to have a server out on the internet that receives position data from the GPS on the Sheeva periodically and does something with it. At first, it might simply record it and when I either get to my driveway or stop moving for X minutes it submits it as a track to the FreeNav server.
Hi Bugbyte! Thanks for your reply. First of all, I want to say Congratulations! You are making a great work, that work nobody wants to make Well, about what you say... I think (and forgive me if this bothers you) you’re not focusing the right way. These things you’re making are great! And it has a tremendous potential, but I think you are diverting from your main goal: kill your car PC and replace it with an iPhone.
Trouble is this device has limitations (apple's fault) as the “incapability” on running several processes. Because of that, I think you make a great decision using the sheeva. But as I said before, in my opinion you are focusing so much on this device, making it the main device.
For example, I read in other forums, that sheeva can be controlled by an usb Touchsreen. Why don't use this capability as a "bridge" between iPhone and the external touchcreen?
I was thinking in a USB VNC connection running in widescreen. Doing this you got the best of two devices: iPhone OSX, and Linux running in the background device for those applications you need to be constantly running...
About OBD... Did you see that? http://devtoaster.com/products/rev/index.html (Take a look on this also: http://iphonehelp.in/2008/10/27/back...in-background/ )
A real-time OBD information in your iphone via wifi (no internet connection required, so no expensive ATT quotes :S )
In this case, if you want to get continuous OBD data log, you can run obd software in your sheeva (remember you got the OBD data via wifi).
Well, after all this ideas, I hope you got my point. And once again, forgive me if it bothers you, and of course for my bad english If you don't understand something or want to ask me something just ask Thanks!
Doesn't bother me at all. One of the main limitations of the iPhone that I haven't discussed very much is running more than one program at a time. Now, there is a workaround if you jailbreak the iPhone and run a program called Backgrounder, which is what I do.
For example, I use it to run my instamapper GPS program, which reports my position every few seconds. I then background that app to keep it running while I run Pandora to stream music. I background that app while I load xGPS for navigation. However, the iPhone OS will quit any apps that are backgrounded if memory or processing gets low and this results in Pandora quitting or instamapper quitting and so forth.
It's important to note that I've moved from my original position of simply replacing my single car PC device with a smart device (iPhone in this case) to replacing my single car PC with multiple PC distributed across a network, some in the car (the Sheeva) and some out on the internet (e.g. the mp3car GPS track server).
I'm also trying not to focus simply on the iPhone. It is sub-standard for use as a car PC. With a closed and proprietary operating system I am unlikely to ever get it to work exactly the way I want it to. That's okay, though. I would rather use the iPhone (or any smart device that can web browse and play music or video) as the link between my car and the net and simply use it to display that information.
More to the point, I am distributing tasks to devices that are best suited for them. The iPhone is well suited for music, video and internet connectivity. The Sheeva is well suited for data collection and interface with USB hardware. The net servers are well suited for data storage, streaming, and processing of information from other web servers and information sources.
So, what exactly does that mean? Well, as you point out, the iPhone can do OBDII. But the iPhone OS only allows you to do OBDII (unless you use the jailbreak and Backgrounder). It won't do OBDII *and* GPS reporting unless you write an app to do that. This is the great advantage that car PC's have over a smartphone based car PC. I am trying to work around that by connecting car to cloud. That's why I think of this as the *CloudCar* project. Or the category as the Connected Car category.
So, following your logic, if the Sheeva is well suited for USB touch screen, then by all means, let's have the Sheeva handle the inputs and relay them to the iPhone. Right now, I don't think I have the technical knowledge of how to do that and it sounds like a very difficult task. I'm hoping I'll attract people with that knowledge to help out as I go along. Or possibly, a manufacturer will solve it for me by building a product that does what I need it to.
By making the project web based, I stay away from iPhone specificity as much as possible, allowing me to substitute new smart devices as they come along. And there is already a full screen web browser app for the iPhone so it *looks* like an app but displays a web page. For example, the rumored Apple tablet may solve the screen issue for me. Or it may not. Either way, I still want to do something that is open and accessible to people who don't have an iPhone but rather have a different type of smart device.
I like the direction you've taken with this, moving from replacing the carPC with an iPhone to connecting multiple systems and making the carPC a node in that system. Is it time to change the name of the thread from "Help Bugbyte kill his car PC with an iTouch/iPhone install" to something that better describes your new objective?
I've replaced my corporate Blackberry with an iPhone 32GB 3GS unit. I like it, but haven't jailbroken it yet (the process is a little shaky for these models). I find myself longing for some of the openness of the Android phones and the Googleness of them. Your interest in not being locked into the proprietary iPhone makes good sense.
(I wonder if I just coined a new word: "Googleness".)
This is a terrific thread to follow, because it stays out on the leading/bleeding edge, and it helps keep me itching to try new stuff.
If just enough is really good, then too much ought to be perfect.
2006 Scion xB with in-dash Atom & Lilliput 889GL -- Worklog at http://www.mp3car.com/vbulletin/work...res-links.html
I like the direction you are headed in Bugbyte and wish I had time to join in. But just wanted to caution you about too much reliance on your internet connection. Everything you do with it that's critical should have a local equivalent because you will lose connectivity for any number of reasons. So for example instead of pushing data to the cloud and using the iphone to view it off the cloud, the push should occur but should also be served locally for use. Hope thats clear. It makes it more complicated in many respects but there are increasingly more tools/technologies out there to support keeping something in sync over a possibly unreliable connection or not always connected connection (perhaps even by design).
And most of what you want out of the sheeva should be supported by a headless capable distro like linuxICE if it doesn't yet (I know those guys are helping you).
Best of luck
Works great except when connectivity is sketchy. It might start playing, then stop. Trouble is, it doesn't start again when it gets the connection back. What would be nice is to select a playlist of songs and have them downloaded to the iPhone or I guess to the Sheeva as quickly as you possibly can while you have a good connection. DOT.Tunes only streams the next song when you're ready, so you're always reliant on your real-time connectivity. I can count on that *inside* the car with a local WiFi hotspot but not on 3G or especially on Edge.
Another example is using the web interface dynamically. I'd say that you ought to cache those pages - again probably on the Sheeva or I guess you could do it on the iPhone. When the page is called, you pull it off the Sheeva server and tell the Sheeva to check every couple of minutes to see if the page has changed and download it again.
Similar story for uploading. If you're uploading gps points but the connection is slow or non-existent, cache until it's better, then upload them in a single shot.
As for LinuxICE, it would be sweetness to see it compiled and run on the Sheeva, along with the other interfaces. Kev000 has been a big help so far and I'm hoping I can count on him to continue!