I've been trying to hack at the DR800SG to get usbnet working, so I could debug my software on a real device with stdout/stderr actually visible ... the emulator is awesome and I use it quite a bit, but it doesn't emulate the timing perfectly (or even close), it would be nice to be able to do the same level of debugging on the device itself. To that end, I compiled g_ether.ko, put it on the device, loaded it, and it worked ...
... well, it worked until sysd decided to kill it. I believe sysd to be the culprit because when I kill sysd before starting usbnet, everything works (modulo NetworkManager's own interference). Well, everything works except for sysd, which is to say that none of the normal software works, but I can ssh in and poke around the filesystem. This is good fun, but my goal was to develop software, not to poke around the filesystem, and developing software for the iRex without sysd running is pretty much impossible.
I looked a bit through the source of sysd, but got overwhelmed very quickly ... somehow, shortly after a gadget driver is loaded, it managed to signal the USB subsytem to disconnect guest mode entirely, so the host detects a disconnect, but the device is still running the g_ether driver and has a usb network (not connected to anything). I'm hoping that somebody with a bit more experience can point me in the right direction with regards to fooling sysd into not killing my network. I'd rather not change sysd, if possible.
PS: I am not trying to do this to tether the iRex. As evidence of this I will simply say that tethering was not difficult, and not something I'm going to actually use or tell you (for any value of "you") how to do, as it's horribly unethical, though as always it was fun to do to prove it could be done. sysd doesn't need to be running for the 3G network connection to be maintained, so there is no conflict. My conflict is with normal client software (e.g. oh, Idonno, TechPDF