Archive for the ‘linux’ Category

Sansa e260, part 2


This is part 2 of a review of my experiences with a refurbished sandisk sansa e260. See here for part 1.

sansa e260

The record button is placed poorly – it’s on the side, right about where you have to grab the device to remove it from whatever case it’s in, so it’s easy to press it accidentally. I suppose I could just turn on the hold switch during those times, though…

The volume/select knob/rotary encoder wheel sticks out too far above the surface of the device, so that it’s difficult to get to the up/down left/right buttons that are right next to it. Also, the knob/wheel doesn’t turn all that easily – as if it were a ye-olde-style mechanism that needed to be greased. Apparently, this is one of the things they changed for v2 of this player before they stopped making it, and since I have a refurbished v1, this complaint doesn’t apply to the newer model.

FM radio reception ain’t great (3 of 8 stations that I’m using to listening to don’t come in without static), but the only reference receiver I have is in the car, so maybe it’s not a fair comparison. The radio does tune very quickly (within 350ms), and with a bunch more presets than a car stereo usually has, it makes for an overall better radio experience than in the car.

stock firmware

As noted above, the record button is too easily pressed, and once you tell it that you didn’t really want to record, it doesn’t go back to what you were doing (although it’s always just 2 button presses to get back there).

The fm radio receiver software lets you autoscan for stations, which is nice. However, if you add any more stations to the list after you do so, they appear out of order, and there’s no way to re-order them. There’s also no way to name the station presets other than by their frequency nor is there any way to categorize them by genre.

Switching between fm radio and stored music is well done. If remembers which station you were on and it also remembers where you were in the stored song and starts you where you left off when switching between the two, which is some nice polish. However, the button for skipping to the next track is different from the button to skip to the next fm preset, so minus some points for polish there.

The sansa has the same button / wheel configuration that an iPod does, but the buttons don’t do the same things (it’s the same, except that play/pause and menu are swapped). I don’t mind the difference in function. Way back when, however, it took me a while (like a year or so) of using an iPod before realizing that the counterintuitive button/wheel combination (and it is counterintuitive) allowed you to hit play/pause, skip forward and skip back anytime while navigating the menu. What I do mind is that the stock sansa firmware does not allow this (the one nice iPod feature).


I got a sansa holster armband for jogging that cost $4.99 shipped. Turns out it’s also useful for listening to music while mopping floors and just randomly doing stuff without having to worry about the screen getting scratched by keys or whatnot while in your pocket.

Unfortunately, after using my armband for 4 days, it broke. While riding my bike. While in traffic. Fell on the asphalt. The whole armband is mostly fabric and velcro, except for one small piece of rigid plastic, which is the part that broke. Ah, well. What did I expect for <$5 shipped? Probably fixable with a big safety pin. The armband did stop the device from getting scratched when it fell, though.

leather case

The leather case that came with the sansa is well-made – it has a belt clip and a magnetic clasp for the cover – but it’s difficult to press the buttons around the knob/wheel because of how the case was designed. I kinda see now why it was thrown in with the sansa.


Most people wouldn’t devote so much time to reviewing a refurbished mp3 player, I suppose, but I’ve been desperately needing one for about 2 years (since my hand-me-down broken-then-fixed iPod finally died).

This post was written while listening to George Harrison’s “Dera Doon” and Shakira’s “How Do You Do.”


Sansa e260


I bought a refurbished Sandisk Sansa e260 v1 for $35 and it came yesterday. Works pretty well so far.

It has 4GiB built in, which isn’t enough for my music collection, but it also takes microSD cards, which have come down in price a great deal lately. 8GiB for about $20. So 12GiB for ~$55 and it has a color screen and a battery that lasts a while (supposedly >15h). Not bad.

I bought it with the plan to put rockbox on it (since rockbox supports microSDHC, whereas the stock firmware does not, and SDHC would be required to use an 8GiB card), but rockbox doesn’t allow charging over usb natively (you have to reboot into the stock firmware for that or for transferring files), so I might just leave it as-is for a while. The stock firmware is better than I expected it to be, but then again, I didn’t expect it to be very good a priori.

I copied 3.5GB to it and rsync said that it did 4.15MB/sec on average. Don’t forget the –no-group option if you use rsync –archive.

One complaint: It was set to the wrong usb mode out-of-the-box. There’s the usb mass storage mode (MSC) and then there’s some other mode (MTP) and for some silly reason, it’s set to the other one by default. After plugging it in to charge for a moment and then unplugging it (after checking on the computer that the drive was not mounted), the software got in a weird state where the display would update normally depending on the normal usage of the device, but immediately it would go back to display the connected-over-usb screen (even though it wasn’t) so that you couldn’t see what was going on. To fix it, I had to find a FAQ about e200 sansas that said to change it to MSC mode in the settings->usb mode thingy, which I had to do with the usb connected screen in the way, but it is still possible to navigate the menus with it like that. Then, I plugged it back in to the computer and it automatically mounted the drive. Then I ejected it and unplugged the usb cable and the sansa summarily rebooted itself (which it’s supposed to do after you disconnect it from a computer for some reason). The weird behavior went away at that point. Been fine since. I probably could have also solved the problem by just rebooting the sansa (which I didn’t know how to do at the time) or telling libmtp to let go of the device somehow, although the system log doesn’t say anything about mtp at all ever. Supposedly the MTP mode is supported in amarok rhythmbox and audacious, among other players, but I much prefer just having a storage device to drop files on as opposed to an itunes/gtkpod-like interface.

Here’s a tutorial on using a sansa on ubuntu linux for any who are interested. It basically works just like any non-linux machine – plug it in, copy files to it, unmount it, unplug it and you’re done – but there’s some good info in the tutorial anyway (updating firmware, adding album art, adding videos and pictures, install rockbox, etc).

update 2008-12-19: This is part 1 of a review of my experiences with a refurbished sandisk sansa e260. See here for part 2.

asus eeePC 901 first impressions


It’s small and has a nice screen and it runs linux, so I had to have one.


The device is smaller but heavier than I expected. The keyboard is also smaller than expected, although it fits my non-stubby fingers well. There’ll still be the occasional mistype until I get used to the size. And the right shift key is in the “wrong” place (not next to the / key, as on most other keyboards). Battery life is at least 4 hours per charge during normal use (tested by running it for 3 hours and noting that it still had 30% charge left, so take from that what you will). See its specs on wikipedia for more info (note: the wikipedia entry has been partially edited by me, so you’re welcome for solving the elephant underpopulation problem in Africa).



The linux distribution that comes with it {xandros} is less crippled than I expected (from having to use maemo/hildon on my nokia 770). Connecting to a network was easy, mounting drives, all the other normal stuff worked well out-of-the-box. I was able to customize xandros so that it had all the programs I needed. It comes with a lot of good stuff {firefox, pidgin, thunderbird, imagemagick, mplayer}, but it’s missing a few of the programs I regularly use {liferea, gqview, gentoo, gimp, evince, audacious, vim-gtk/gvim, gpsbabel} and a few of the choices are a little strange {adobe pdf reader instead of evince, staroffice instead of openoffice}. To get most of these additions, you have to manually add a line to /etc/apt/sources.list that points to non-asus approved software (and then it complains about it being non-asus approved every time you try to install something, annoyingly reminiscent of the situation on the nokia 770).

The problem with asus’ xandros is that there’s an automatic updater for bios and the system/os/interface and for things like touchpad/multitouch. The multitouch and bios updates install fine and work, but the system updates are very broken (updates will appear and disappear seemingly at random) and have been broken for months (which is apparent from the forums at This is asus’ fault, and I hope they fix it asap so that new customers don’t get frustrated.

Another problem arose from when asus decided to finally let you install a wide variety of software on the thing. They came up with a whole website that lists thousands of programs that you can download (which is awesome). The only problem with this is that the system update that presumably would enable this easy install of software isn’t yet available (see above). From their website, you can only download a tiny file with your browser that gives the installer info on how to automatically download and install the program, but firefox hasn’t been told what to do with this file and there’s no installer installed, so nothing happens.

Another, more minor problem is that it uses unionfs, which is a way of getting two partitions to seem like one (in this case, a read-only one that has most of the operating system and a read-write one for installable stuff). This is I think primarily so that you don’t accidentally break anything on the read-only part, while still allowing you to install stuff and change settings. The secondary reason, I think is that it makes it easy to do a restore to factory settings (selected by pressing f9 at boot) – it just formats the read-write partition and it’ll be just like it was when you got it, no restore cd required. Unionfs isn’t perfect. As a shortcut (for performance reasons), it creates temporary files that may end up using up all your inodes, which makes it act as if the drive is full, but not everyone runs into this problem. The unionfs choice probably stems from the fact that the first generation of eeePCs only had a single solid-state drive and needed to save user data and settings there, whereas the 901 comes with both a 4GB SSD for the operating system as well as a 16GB SSD for user data and settings.

The final frustrating thing was that the panel icons kept disappearing so that it was impossible to use some features of the computer (bluetooth, the cpu performance selector and occasionally some of the other ones). I never did try the f9 restore to try to fix any of this – I wanted ubuntu anyway, so…


I checked out xandros for a few days until I gave up and installed ubuntu-eee 8.04.1. Note that the previous version (ubuntu-eee 8.04) doesn’t have crucial things like a working wifi configuration, so don’t bother installing that if you have an eeePC 901. This new version was only released about a week ago, so I came to this whole eeePC 901 thing just at the right time. Ubuntu-eee works well and version 8.04.1 comes with the netbook remix (which is supposedly more well-suited to the low-res screen on an ultraportable). The netbook remix is more of an icons-on-the-desktop than a pick-something-from-a-menu interface.

So far, everything works pretty well on ubuntu-eee 8.04.1. There have been a few times where it hasn’t wanted to go into suspend mode (which was fixed with a reboot). And there’s a couple other minor problems like:

  • there’s a cdrom drive entry in /etc/fstab that you have to remove or comment-out to get any usb drives to mount
  • the suid bit on the /bin/mount executable is not set, so if you put a custom entry in /etc/fstab, you have to be root to mount it even if it that line includes “users”
  • there’s no cpu clock scaling indicator on the panel, so you don’t have any control over or information about the current state of the processor
  • (this might just be a complaint with the netbook remix, but) it is unclear how to add anything to the panel (in normal ubuntu, right-clicking on an empty part of the panel gets you to the “add to panel” option, but there’s no empty part of the panel in the netbook remix), so if you remove anything from your panel, good luck getting it back

Other than that, ubuntu-eee 8.04.1 works very well for a linux distribution that was built by some guy, and much better than the distribution that was built by all the resources that asus threw at it (which is apparently not enough).

The only downside to using ubuntu is that it takes 50 or 60 seconds to boot, whereas xandros only took about 25.

update 2008-10-06: I found that if you put the mouse cursor in the topmost rightmost part of the panel and right-click, it’ll let you “add to panel”. One of the things you can add to panel is a cpu frequency scale indicator, so the last two items in the above “minor problems” list are not really problems at all.

public-key cryptography and openssh


If public-key encryption doesn’t work even though you’ve generated your keys (rsa and dsa) and shared the .pub versions and cat’ed them to the authorized_keys file on the remote machine and made sure the permissions are all correct (and by all I mean the .ssh dir, the id_dsa and id_rsa files), it might be one of two things:

The first is if your home dir is world readable, ssh refuses to continue with public key cryptography and *won’t tell you in the output of the client* (not even the -v -v output). The info is hidden in /var/log/auth.log. So you gotta “chmod 700 /home/yournamehere” as root to fix that.

The other thing it might be is if one or both of the computers had the broken version of openssl when the keys were generated. You can’t just ignore the “you must regenerate your keys” message – the other side *checks* and refuses to allow the public key cryptography to continue. Again, check /var/log/auth.log for the plain-as-day error message which even tells you to lookup info on ssh-vulnkey so that you know what to do to fix it.

I’m sure that I found and corrected this problem on a different install on a different machine a couple years ago, but posting it here is how I’ll remember for next time…

the perception of quality


I have a Western Digital external hard drive with a USB interface and it was behaving unreliably on my laptop running Ubuntu 6 and my desknote running Ubuntu 7. It did work reliably, however, on my tower that runs gentoo linux. Unreliably, in this case, means that in the middle of trying to copy data to or from the drive, it would unmount and spontaneously remount and the file io operation would fail. I thought this meant either Ubuntu sucked or my drive was broken but worked intermittently or that Western Digital drives sucked intermittently.

Turns out it wasn’t any of those. The laptop and the desknote both provide just a little bit more current to USB devices than the tower does, so if you plug in the hard drive to the tower using just one of the two USB connectors on the split end of the cable, it doesn’t spin up and you need to plug the other one in to a second USB port for extra current. On both the laptop and desknote, the drive spins up with just the single cable plugged in (but while being used, the drive draws more power than it took to just spin the drive up and then spins itself down for lack of power and generates an error on the bus). I only realized this was the problem today when I was holding the drive when it came up with one of its buffer io errors: The drive was spinning down and back up as if it didn’t have enough juice. It’s been working reliably since I noticed this and plugged in the other part of the Y-cable.

I was ready to ship the drive back to Western Digital and uninstall Ubuntu. The FUD (fear, uncertainty and doubt) that proprietary software companies (and their minions) have spread about linux being unreliable works on an unconscious level.

old laptop -> digital picture frame – part 2


I reverted my wifi security to WEP from WPA so I could get wifi working on every computer.

With networking in place, I can have control over the digital picture frame remotely. I fixed a couple bugs in the view-slideshow script and added some stuff so it can now be easily controlled from another computer. It now checks /mnt/ramdisk for the following files: display-slideshow, shutdown-now and quit-view-slideshow-script. If any file called display-slideshow exists, the script will (re)run fbi. If the file is not there, it’ll kill any instances of fbi. If the file shutdown-now is there, it’ll initiate a computer shutdown.

Further, I wrote three simple scripts on the other computer so controlling it is as simple as possible. frame_off is to shutdown the digital picture frame, frame_blank is to have it display a blank screen and frame_on is to turn the slideshow on after having been blanked.

old laptop -> digital picture frame


What I wanted:
A digital picture frame that mounted on the wall so that all that was visible was the screen. It should have a copy of all the pictures I want to display on it on its drive, but stored only at the maximum resolution of its screen (in this case, 800×600). I should be able to use rsync to remotely synchronize the copy on its drive with my generated copy on my main machine (that’s generated from the full-res versions using a perl script I wrote called ImageSync a while back).

What I had:
I bought a 12″ laptop off craigslist for $100 2 years ago. It’s got a 475 MHz amd k6. The battery that came with it was no good, so I bought another for $75. When I plugged it in, it wasn’t even recognized. I thought it was the laptop that was broken and I took too much time trying several methods to get it to charge and be recognized, but now I wish I’d returned the battery for a refund. This laptop served me well as a second small desktop computer for a while, but last summer, I bought a desknote (a laptop sans a battery) without a processor, hard drive or memory for $230 (which took desktop-sized processors and ram but a laptop-sized hard drive, all of which I had already). So the old laptop has been sitting in a box under the bed for the last year. I finally decided to do something with it. The screen had no blemishes except for a lighting inconsistency at the top, so it was good for displaying pictures. The whole doesn’t-recognize-a-battery thing meant it wasn’t a good portable, so it would be happy hanging on a wall.

What I did:
So yesterday, I got it out and put some Damn Small Linux on it (a linux distribution that fits on a 50 MB cd-r). It booted fine, so I installed it on a spare 2 gig laptop hard drive I had and then set to work on getting the screen turned around. I wanted it to eventually look like just a regular picture frame, so it couldn’t be in normal laptop mode where if you can see the screen, you can also see the keyboard. To turn the screen around, I had to unscrew the display at the hinges, remove the brackets holding the hinges to the case, move them to the outside backside/underside of the case and then re-attach the hinged display to that, effectively putting keyboard and screen on opposite sides.

For the first bracket, I decided to cut the plastic on the underside so the metal bracket would fit in the smaller hole that existed on the underside of the laptop. This was unwise. It cracked the plastic in several places, making weak the part I needed strongest (to hold the display in an awkward position it wasn’t designed to handle). So, on the other side, I took a metal file and filed the bracket down a couple of millimeters and it is oodles stronger. To repair my mistake on the first one, I took a strip of aluminum and drilled three holes in it and screwed it in over the parallel port and put a third screw into the bracket to that it would have something to grip besides the 3 broken strips of plastic that were left. Here’s a picture of the aluminum bracket:
aluminum bracket

Below is one of the hinge brackets mounted mirrored to its original position (this is the second one I did where I filed the metal instead of ruining the plastic):
hinge bracket

The following picture is of the whole display mounted on the opposite side from where one is normally mounted on a laptop (you can see the aluminum bracket on the left in the picture below):
mounted display

Today, I opened the case up slightly to check that nothing important was in the way and I drilled 2 holes through from the battery compartment to the wrist rest area so that I could mount this digital picture frame on the wall. Square drive. Single-wall construction. Didn’t use a level, so it’s a bit crooked. Here’s how it looks right now:
mounted digital picture frame

With all the hardware finished (except the sleek, finished wooden case I’ll probably never build for it), all that remained was the software. I’d found a program to display images on the frame buffer so that I wouldn’t have to start x windows (which takes time to load and uses up ram and is a bother to have automatically log in, etc) called fbi (probably initials meaning Frame Buffer Imagesomething). It took a while to get that compiled from Damn Small Linux. It needed no fewer than 5 other programs compiled and installed before it would compile and install. A pain, but straightforward at least. Download, unpack, ./configure, make, sudo make install. That’s it. The tricky bit was figuring out how to get it to start properly when the computer started up.

Fbi is neat because if there’s a picture that’s rotated the wrong way, you just hit R or L and it rotates it right or left. It auto-loads the next picture so there’s no visible flicker or delay between displayed pictures. It was a nice find.

gory details:
I thought I could just put it in /etc/init.d/rc.local or whatnot (whatnot=/opt/ and have it start when the bootup script was finished booting the computer. But then I realized that if it crashes or someone hits the quit button, it would be a pain to re-start the program (since the digital picture frame is now mounted with the keyboard facing the wall). So I knew /etc/inittab was the place to put it. If it went in there, init (the program in linux that runs all other programs) would make sure it was still running and if not (for whatever reason), restart it. Trouble with that was (and it took me a couple hours searching google to figure this out and try various ways to circumvent it) was that fbi (the picture viewer program) detached from the console immediately upon being run, init detected this, and re-ran fbi even though fbi hadn’t quit. This happens rather quickly (being a computer) and soon, you have 10 copies of the program running and more coming and it’s quickly steamrolling away from you. Luckily, some poor soul in unix/linux history ran into just this problem long ago and decided that if a program was respawning too quickly like this, something was wrong and it would stop itself from running any more copies and give you 5 minutes to figure out what went wrong and fix it. After a little thought (banging my head on the wall), I decided to write a quick bash script that produced a list of all running programs [ps], see if any of them were fbi [| grep fbi], and then only re-run fbi if it wasn’t running, which is only slightly different from the test init does (that in this case doesn’t work). So init runs my script (use init q to tell init to re-read /etc/inittab) and makes sure my script is always running. My script generates a list of all the files in the directory the pictures are kept, waits 60 seconds, checks to see if fbi is running, and if not, re-runs it and then quits. Fbi reads the list of files and starts displaying them with a 4 second delay between advancing to the next picture. If the user quits fbi or it program crashes, my script (which keeps being started by init) will re-run it, so at most, the screen will be non-picture for about 60 seconds.

I picked Damn Small Linux because I’d used it before and knew it detected hardware well and installed properly on a hard drive. Last summer, I installed it on another, crappier, older laptop with a functioning battery so that my girlfriend could bring it to her summer field school on the Big Island and have a computer for internet access. It doesn’t do wpa (wireless protected access), which meant that she could only use the internet for the first 2 weeks she was there while she was near an unencrypted network, the second 2 weeks being near a network that was wpa-only. Sadly, wpa is what my wifi network uses for security, and so a significant part of the effort for this project went into looking for a linux distribution that did do wpa as automatically as possible (my patience for figuring out how to do stuff on the command-line in linux wanes with each year that passes). I found a reference that said puppy linux did wpa, so I downloaded that and installed it and it seemed like it was almost working and then it didn’t. I also tried slax. That booted up fine, but then I read the documentation on the website for it and it said it really wasn’t the sort of distribution you installed on a hard drive. I tried geexbox, which is supposed to be a linux cd you boot up and have it play media files from your server, but this shit didn’t even boot up on the computer I tried it on. Just got some vertical colored stripes on the screen. Fucking linux. I want my money back. 🙂 So, I’m stuck with damn small linux because it works well enough to get the pictures displayed.

The walls here aren’t really yellow; they’re white. I had to set custom white-balance on a white-ish picture being illuminated from the ccfl backlight of the digital picture frame so the image would look nice in the image of the image on the digital picture frame. The side-effect was that the walls appear yellow because for some reason the fluorescents in the kitchen aren’t the same color temperature as the one in the laptop.

My algorithm is wrong. It shouldn’t re-create the list of files every 60 seconds (it does this at least this frequently). It has 96 megs of ram in it, so the whole dir structure is cached, but it’s still not a good way to do it. I’d think about it more, but the damn thing’s mounted to the wall with the keyboard facing the wall. It works well enough right now (it’s displaying my pictures right now for the last few months, even the ones I took of it while assembling it). If I had a spare pcmcia ethernet card (I have only one and it’s being used by another project right now) or a working wpa wifi setup or I disabled wpa on my wifi network (which I stubbornly refuse to do), I could tinker with it via ssh…

Another thing I need to work on is that there should be controls to pause the automatic slideshow advance or dim the display or tell the computer to shut down, etc. I had a ps2 numeric keypad in my box of computer parts that would have been perfect for this, but 2 weeks ago, I threw it away because I thought I’d never do anything with it.

Hanalei valley on Kau’ai