BoX2300
From TheRobotGroupWiki
Contents |
the eBox2300
The eBox-2300 is a small low cost embedded PC being sold by several different distributors. This web page documents my efforts to utilize this computer for my SeekerRobot project. I intend to use Puppy Linux. The version I am using is the eboxpup alpha 01 by Paul Akterstam located at http://bexa.org It is based on the 2.13 version of Puppy. Interestingly, they do not include the 2.13 development environment with this ISO but I downloaded the devx_214.sfs version and renamed it to devx_213.sfs and it works fine. I tried upgrading to 2.14 and it was a disaster. Fewer drivers supported, larger memory footprint, broken package management. There is now a 2.15 version of Puppy but I am reluctant to try it. My understanding is that it has an even bigger memory footprint. Not good news for our little eBox. Better the devil you know than the one you don't, so I am sticking with 2.13 unless I find a compelling reason to change.
I bought this unit from eWayco. They do not accept credit cards but even with the bank wire charges they were cheaper than these guys who accept credit cards. The specifications are:
* 200 MHz Via Vortex86 SOC * 128 MB Ram * 256 MB IDE Flash Drive * 3 USB 1.1 ports * 10/100 Realtek 8139 ethernet * AC-97 Audio * Compact Flash Slot * Built in VGA up to 1280x1024 * Runs from a 5V 3A power supply!
The photo shows a serial port but I don't think you can get it with a built in flash drive and serial port together. I also ordered mine with the optional wireless lan which ended up being a Via VT6655 card. /!\ WARNING! Do not waste your money on this wireless card. It does not work with Puppy Linux and Via Technologies apparently has a somewhat spotty history of Linux support. Just check their own message forums. Via sent me a copy of the ndiswrapper source. I went through their compilation and installation instructions and was still not able to get a TCP/IP address. A really nice guy in New Zealand sent me an older version of the VIA drivers that are supposed to work under ndiswrapper. Sadly, this had the same problems for me. I even had one of our networking gurus at work take a look at the tcpdump packets but the only thing he could see is that the DHCP DISCOVER request appears to go out but never sees a response. It is so frustrating that the card can see the wireless network but is unable to get put a dynamic or static IP address on it.
/!\ Additional warning! The documentation lies. The power connector is NOT a mini din as documented. Instead it is some sort of mutant din-like connector. It is smaller than a real DIN. It is larger than a mini-din. The pins are offset different from a standard din. And the pins appear to be a mixture of fat DIN pins and 1 single thin mini-din size. Now I have to desolder this ugly connector and put in a standard barrel connector. Yet another frustration to deal with!
Additional Hardware
To get around the problem of not being able to use the built in wireless card, I plugged in a cheapo Airlink USB wireless 802.11b/g dongle. The zd1211 driver in 2.13 works flawlessly! Unfortunately, they replaced this one in 2.14 with the zd1211-rw which does not work. Because the ebox only supports USB 1.1, you only get 11 Mbps on the wireless link. Still, it works.
Eventually, I got tired of messing with the broken wireless stuff and bypassed the problem entirely by adding a wireless router. I can run a wired connection to the router without clogging up the slow usb 1.1 ports. This lets me set up a static wired ip address for the ebox and the wireless router will take care of my remote communications and security. This particular unit was on sale at Fry's for $25.
I purchased USB powered speakers and a couple of 256 MB CF cards from Discount Electronics for $9 each! Those guys ROCK!
For Hard Drive space, I added a 2.5 USB Hard Drive Case from Outlet PC. I had a small 2.5in 6MB laptop drive already in my junk box. I partitioned the hard drive for 5 GB ext3fs and 1 GB linux swap. When booting from Flash, the swap is not automatically turned on. Even placing "swapon /dev/sda2" in my ".xinitrc" did not work. I have to manually enter it when booting from flash. To make the system boot from the Hard disk, I had to play a lot of games with GRUB and the universal installer. To tell the truth, I am not sure exactly what steps I went through to get it working. Basically, I installed GRUB on the hard disk in both the Linux boot and MBR. Both simple and expert installations fail to produce a bootable system. Kept getting "Operating system not found". I used fdisk to manually make the partition bootable. Then I reran the universal installer and told it to overwrite the MBR with Syslinux. Surprisingly, some combination of these steps produced a bootable USB hard disk.
I used this low cost MS-GM-03 16-Channel USB NMEA-0183 GPS Receiver purchased from Geeks.com for $35! To get it working under Puppy Linux I had to "modprobe cdc-acm". I added this line to my "/root/.xinitrc" file. The unit then attaches to "/dev/input/ttyACM0". Open it up with cutecom and set the baud rate to 4800 baud and you can confirm that the gps data feed is working.
Since the robot is going to be mobile and I don't have enough space to mount a full blown computer monitor on it, I thought I would try out one of these cables that may let me use a little portable tv to view the console screen in the field. The cable goes from vga to composite video or s-video. This should be enough for at least a 640x480 display. Not sure if it works correctly with the ebox yet, but they are only a few bucks on ebay.
Hard disk drives running on USB 1.1 is the suxor! I decided to mount my hard drive into the ebox where the Solid State Drive was. Of course, the way the ebox is designed the connector placement prevented the laptop drive from fitting in the box. I ended up taking a dremel tool and grinding a slot where the 2 halves of the shell meet and ran the IDE cable out of the box. The drive hangs off the side of the box and looks really tacky but the performance improvement was worth it. Boot times and shutdown times are now almost reasonable as puppy linux merges all of its file systems and unmounts the swap space.
USB to Serial Cable. Picked up one of these at Fry's for $15. Manufacturers page here: PPA USB to Serial. To get it working with Puppy Linux I had to add the following 2 lines to my .xinitrc:
"modprobe usbserial" followed by "modprobe pl2303". It then mapped the port to /dev/usb/ttyUSB0.
Additional Software
Packages that I had to install with Pupget:
* cutecom serial port terminal * vncserver Tight VNC server. Why VNC client is included in the default installation but server is not boggles my mind. * qt Dependancy from cutecom. Of course the version that it tries to automatically download (qt...NO-SQL) does not work so you have to load whatever the latest version choice is offered.
* gpsd - A really nice gps daemon that unfortunately does not build/run/install with the standard pupget stuff. Had to download the source code. Downloaded python, the python headers (from the support forum) and lesstif. Moved some of the source libraries around. Finally got the silly thing compiled. I should probably package up the binaries to make it available to other Puppy users.
Mounting
Here are some photos of the ebox2300 mounted on a piece of shelving before attaching to the Seeker robot.
Misc Useful Info
To play wav and mp3 files from the command line use the following command:
mpg321 -o oss <filename.mp3>
To play ogg files from the command line use the following command:
ogg123 <filename.ogg>
The wired 10/100 ethernet connection works great with the "8139too" driver module.
The Audio seems to work as OSS Audio but ALSA does NOT! In /root/.xinitrc I added the following line to turn up the speaker volume to a usable level on boot. "setvol 0 85 85"
/!\ Beware when opening the case. When replacing the screws, do not use an electric screwdriver. Another "feature" of the eBox is that they cast it out of an incredibly brittle material. When I used an electric screwdriver to screw everything shut, I managed to twist off 3 of the 4 threaded posts that the screws go into. Use a regular old screwdriver and don't crank down too hard on them.
Contact
Page maintained by EricLundquist
You can e-mail Eric at roboenator at gmail dot com.
Last update 8-July-2007.
