Adrian's Adventures on the EeePC 701
Someone has loaned me an EeePC 701 to do some web proxy/cache hackery on. My first goal was to try and bootstrap FreeBSD on the thing.
The first trick was figuring out how to install FreeBSD. FreeBSD-8.0 apparently has support for the hardware so I decided to install 8.0rc1-i386. There is a convenient memory stick install image .. which is 900 megabytes. 250 megabytes of which is the documentation packages. Grr.
I need to go back over this section to properly document what I did to write the disk image from a windows box w/ a SD card slot; then the BIOS magic to try and make it boot. Suffice to say, turning off quickboot and watching the BIOS boot screen is very helpful in debugging.
"ESC" during BIOS startup will give you a boot menu to select which device to boot from. This is very useful.
This was, by and large, uneventful. The internal SSD is "small" (4 gigabytes) and although you -could- try and create a BSD-style layout with separate partitions for everything, I suggest just throwing in the towel and creating one large partition for everything.
I didn't configure swap space. I'm lucky though - my EeePC has 2 gigabytes of RAM. Swapping to an SSD may or may not appeal to you.
FreeBSD wireless setup
The first thing that struck me as different/difficult was the wireless stuff. The last time I toyed with 802.11 support under FreeBSD was in the FreeBSD-4.x days and a lot has changed since then.
The 802.11 stuff is reasonably well documented in the manpage but reading the manpage on a tiny LCD is not my idea of fun. I eventually figured it out:
- ath0 is the wifi interface;
- one "creates" interfaces from the main interface - each created interface can have different parameters (eg SSID)
- this created interface is what you use for communication
So, as an example:
# ifconfig ath0 up # ifconfig wlan0 plumb wlandev ath0 up # ifconfig wlan0 authmode shared ssid CACHEBOY wepkey foo123 deftxkey 1 # dhclient wlan0
Another useful command is ifconfig wlan0 scan.
I could not figure out how to correctly create the wifi interface, set the parameters AND bring up DHCP using statements in /etc/rc.conf. I'll have to investigate this further.
Also, although I typically configure ntpdate/ntpd to run on startup on my FreeBSD machines, I have found I'm unable to correctly do so when the network interfaces aren't up. ntpdate fails; ntpd starts but doesn't resolve any ntp servers and sits in the background. I also need to investigate what to do about this.
Suspend/resume seems a bit flakey. The suspend also doesn't seem to last very long; it is possible I just haven't configured it to sleep in the correct sleep state.
The LCD backlight resumes at level "0". A quick hack to /etc/rc.resume sets it to something else; but it would be nice if the LCD level was saved and resumed automatically.
X Windows setup
None of the guides I've read made explicit mention of this - but Xorg seems to want to talk to hal/dbus very much. I need to figure out exactly what and why. I've installed both of these and it uses this to probe the keyboard and mouse devices.
Mouse related stuff
The kernel psm device doesn't automatically probe the synaptics driver itself on startup. It will quite happily pretend to be a PS/2 mouse but it doesn't seem to want to work in X by default.
When I eventually made the PS/2 support work it was unusable. Button-up events weren't being generated - I had to move the cursor after a button press in order to have it detect the button-up. Thus you really, really want to enable the synaptics support at boot-time.
TODO: flesh out how to do this, and figure out how/why the X mouse configuration still works when it logs all kinds of probing failures..
Graphics related stuff
Xorg uses the "intel" rendering driver. Various information on the internet points to using a custom mode line for LCD support. I'm using it, but I'm sure I had it working without it.
TODO: more testing there.