USB over Wi-Fi

I have a project idea for my FEZ Panda and would like some feedback from those more knowledgeable. I would like to use it as part of a wireless telemetry system for a race car with a standalone engine control unit. The Panda would connect as USB host to the ECUs USB port and use a Zigbee Wi-Fi module for the wireless. A PC would receive the Wi-Fi signal, probably thru another micro, and connect to ECU as if it is plugged directly into the computer. The ECU transfers up to 1.5Mbps. Id like a range of 1000 feet.
The biggest challenges apparent to me are: 1. A driver for the ECU on the Panda. 2. Mapping the Wi-Fi data to a port so the ECU software can be used. 3. Electromagnetic interference from the car.
What do you think?

I think you can but 1.5mbps maybe too much for little panda to keep up with

I think your biggest issues here are going to be radio range, and handling that much data.

WiFi is very low power (max limit 100mw) If you had perfect line of sight in a perfect RF environment you’d be able to get 800m (~2600ft) however that is at a very very low tx/rx rate, lower than most wifi would go so using about 1.5mbit you’d get around 300m (900ft) in an ideal world. This means with any sort of obstacles - walls - humid air - trees - grass - metal of any sort - carbon fibre - etc, you’re going to be getting way way less range. I’d be surprised to see you get 300ft out of wifi in real world conditions whilst staying in the 100mW transmit/receive limits.

You may want to go with something more like the ChipWorkX to have any chance of handling the data rate (being about 3x faster and having far far more RAM), or alternatively using something like an ARM Cortex M3 or A8 to handle the data/process the data.

Personally, I think your biggest problem is going to be latency.

The max length of USB cables are refined, if i’m not mistaken, according to the latency induced by the cable. Thus if the PC sends something to the device, then it will expect a rely VERY quickly.

Also, as far as I know there is a frame on the USB bus, even if there is no data, every 1ms.

Question: What does the ECU look like when plugged into a PC? Isn’t it just a serial port? If it is then you don’t have to muck with USB emulation. On the Panda, just open the USB serial port and relay data to/from it to/from the PC. Ignore the fact that the end termination is USB.

[quote]You may want to go with something more like the ChipWorkX to have any chance of handling the data rate (being about 3x faster and having far far more RAM), or alternatively using something like an ARM Cortex M3 or A8 to handle the data/process the data.
[/quote]

FYI: ChipworkX is 6 times faster not 3 times. CortexM3 is not faster due to external memory while lacking of cache

You guys have brought up some very good points, thanks. I really doubt the feasibility of my original idea now. Directly sending the bits is definitely not going to work, USB has a round trip timeout of only 1.5 microseconds. Right now I’m thinking my best option is to get a Mini ITX running Windows and the ECU software, then I can remote desktop to it and hopefully support a high power Wifi module.

As far as I can tell it looks like one of these. http://www.silabs.com/products/interface/usbtouart/Pages/usb-to-uart-bridge.aspx

Then you can use a panda, i think. Maybe Gus can chime in here.

You can plug it into Panda, open the usb->serial adapter, which looks just like a serial port. Then you can just send everything you get from the “serial port”, over wireless, to another Panda at the PC. And vice versa.
The Panda at the PC can use the CDC class so that the Panda looks like a USB serial port to the PC. The software will not know that there is a wireless link in the middle, except for a few ms delay, which over serial shouldn’t be an issue.

In essence you need a serial to wireless and a wireless to serial bridge.

I am lost! Are we talking abut WiFi, USB, CDC, speed, chipworkx, cortex…etc?! :slight_smile:

silabs + ftdi + prolific use their own drivers, not standard CDC. FEZ uses CDC

Thanks Gus, that was my question… :slight_smile:

So he will have to implement his own SiLabs driver? No so easy as i though… :frowning: