Good news but only after doing a crazy hack. Scroll down to see the necessary hack to make USB-Ethernet work, otherwise keep reading for an "interesting" hack.
Symptom: if wireless isn't active (deactivated the config/switch to a non-working config), chumby can't/won't proceed past the bootup phase. My USB Eth *is* active (I can ping the IP during bootup), however SSHD isn't running yet which means I can't mess with things at this point. (apparently sshd won't start until after the wireless network check passes).
After more snooping, I found out why chumby ignores the eth0 device: in the /usr/chumby/scripts/network_status.sh script file which is run before loading the control panel, there's a check to see if the wireless network device specifically (rausb0) is up (i.e. connected), if not, it it sends an error which should trigger the "pick a wireless network". It's hardwired to look for "rausb0", not any network or other device.
Problems to overcome:
1] Chumby wants the wireless specifically to be active at boot time
2] Chumby wants a previously verified wireless configuration stored
3] Chumby won't accept any other network interface during the network check
4] Chumby is a read-only file system where the networking scripts are kept
Fortunately, there is a small loophole in the design of the "is the network up" code that gives us what we need. It's looking for the word "RUNNING" in the response from ifconfig to decide if the rausb0 wireless interface is up. (curious design, but it opens up a way around the network check).
So, here's where it gets evil. In my "debugchumby" script, I set rausb0 (the wireless) to IP= 127.0.0.1 (the localhost/loopback ip which should always be "up"). This immediately sets it to "RUNNING" and is verifiable via ifconfig:
rausb0 Link encap:Ethernet HWaddr <HIDDEN>
inet addr:127.0.0.1 Bcast:127.255.255.255 Mask:255.0.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Now, with rausb0 set to 127.0.0.1, the network check thinks it's up and proceeds happily.
I have verified that the dhcp client adds a new default route to my router autmatically when the IP address is assigned. No "route" command necessary. Because of this Chumby *thinks* it is sending traffic out over wireless, but I've redirected it to the usb-dongle.
Wa-La. USB-Ethernet is active.
The *only* reason this works is because the debugchumby script is run before the network_status.sh script. This gives us the window we need to be naughty.
Now, I believe there is a requirement that the wireless network "was" configured/working at some point (there's a check for that too in the network_status.sh code) as it wants a configuration of any sort present. But, with my hack above, it doesn't matter. Any configuration will work (even networks that aren't currently present), because rausb0's traffic is going to the ethernet. So, to get your chumby working at the office, where your IT people won't let you connect to the wireless network, setup your chumby at home with a working wireless config first, copy the debugchumby script below and reboot.
(side note for chumby to fix at some point: the wireless network key is stored in plain text in a not-so-obscure file. Not a good idea. They could have at least zipped the file with a password or something more clever.)
Then, bootup with the following debugchumby script:
##############################################
#!/bin/sh
/sbin/udhcpc # tells the dhcp client to pull the ip address from your router for the ethernet
# this coincidentally sets up a default route on your network via the ethernet so no route command necessary
ifconfig rausb0 127.0.0.1 # changes the ip of the wireless card to the loopback IP, tricking the network status checker
##############################################
side effects: if you do this, however, the chumby info screen will show the following (incorrect info):
IP: 127.0.0.1
SSID: <name of not-working wireless SSID>
you better know/write down the IP of your chumby, or you won't be able to ssh into it (or you can just unplug the usb during boot)
if you're all set, your ifconfig response should look like this:
chumby:~# ifconfig
eth0 Link encap:Ethernet HWaddr <HIDDEN>
inet addr:192.168.0.109 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:375 errors:0 dropped:0 overruns:0 frame:0
TX packets:314 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:402658 (393.2 KiB) TX bytes:35355 (34.5 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:47 errors:0 dropped:0 overruns:0 frame:0
TX packets:47 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:8196 (8.0 KiB) TX bytes:8196 (8.0 KiB)
rausb0 Link encap:Ethernet HWaddr <HIDDEN>
inet addr:127.0.0.1 Bcast:127.255.255.255 Mask:255.0.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:26 errors:0 dropped:0 overruns:0 frame:0
TX packets:173 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:3783 (3.6 KiB) TX bytes:13024 (12.7 KiB)
and your routing table will look like this:
chumby:~# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.0.0 * 255.255.255.0 U 0 0 0 eth0
127.0.0.0 * 255.0.0.0 U 0 0 0 rausb0
default 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
I've copied my setup with descriptive information on my site: http://www.rnoia.com/chumby
Happy Chumby-ing
-roger
Visit Roger's Chumblatory:
www.rnoia.com/chumby