[simpits-tech] SeeedStudio ethernet shield

Matt Bailey dabigboy at cox.net
Tue Sep 9 21:40:54 PDT 2014


On Tue, 09 Sep 2014 17:10:52 -0500
Cris Harrison <phoenixcomm at gmail.com> wrote:

> and why usb free???? use IOPs like I do each pc can run a bunch of 
> interface processors (arduino(s), Phi, etc)
> ~~Cris

Oh Cris, you asked for the rant. :)

USB is the devil. USB devices require a specific state-based session be
maintained with a host (the PC)...any disconnection, interference, or
interruption of this session completely screws up the whole simulator,
usually requiring a reboot of at least the sim software itself (I
have experienced this firsthand, with DC relays causing Arduinos to
reset, or lose their connection momentarily). This by itself is enough
to disqualify USB from simulator use. But allow me to digress...

The enumeration order, and virtual device instances on the host, are
pseudo-random...I can only maintain a semi-sane state on my Linux-based
simulator by not adding or removing devices (Arduinos and joystick
controllers, mainly). Changing ports, or throwing another Arduino or
joystick device into the mix, has the potential to completely screw up
my device order. So, any changes to the sim require that I touch code
again to make it address an Arduino or joystick device that has
"migrated" to another device node. This is unacceptable. The devices
also require special drivers, and processing power from the host. And I
don't even have any AC voltage based interfaces in my sim...just ask
Justin how robust USB is when it's within a few feet of 400hz aircraft
voltage. :)

USB is a closed, proprietary standard. Ethernet is an open standard that
has been around for decades. Even in Python, I have fairly low-level
access to a number of different protocols that use ethernet...I can
choose how I want to do error-handling, for instance, or at what rate
my devices need to refresh.

To top it all off, even the physical connectors suck. USB connectors
becoming disconnected, getting damaged, or causing other mayhem, are a
CONSTANT issue on embedded systems (which is really what a flight
simulator is).

Ethernet, on the other hand, does NOT require a "lifeline" to the PC. I
have been using UDP in my sim (for my various pieces of software to
talk to each other) since day 1, and it has literally been ZERO hassle.
UDP especially is very nice. My various bits of software blast out UDP
packets to each other. If a packet is dropped here or there, or even if
a device goes completely offline, it doesn't bring the whole sim down.
I can completely reboot my instrument PC (or my radar PC) with X-Plane
running, and nothing bad happens. There is no server-client
relationship, all the devices and software instances are just clients
on the network. IP addresses are STATIC, they NEVER change. I can code
up my altimeter on one IP address today, and never have to worry about
it again. And if I want to check a device's online status, I simply
ping it from ANY PC on the network.

Ethernet also means I get a nice locking connector. What's more, the
connector is cheap, and easy to replace (or make entirely new cable) if
it does ever get damaged. I can also do longer cable runs, which is very
important as I start on a much larger cockpit...no "booster" required.
And did I mention gigabit ethernet is (reliably) over twice the speed
of USB 2.0 in USB's IDEAL conditions?

There are three applications I can think of that are good for USB, and
two of them have a reliable alternative: mice, keyboards, and portable
storage devices. It's nice to be able to plug a USB keyboard into one
of my systems on-the-fly to do debugging, or clear an error message or
some such. So I guess I don't COMPLETELY hate USB, just 95% hate. :)

-- 
Matt Bailey

Keeping It Real:
Sabreliner 60 Flight Simulator
Serial # 306-61 - N1JX
http://sabrelinersim.com


More information about the Simpits-tech mailing list