Blog: 2012-10

Latest  2014  2013  2012  2011  2010  2009  2008  2007  2006  2005  2004  2003  2002  2001
-12  -11  -10  -09  -08  -06  -05  -04  -03  -02  -01

RackOut Update

 [photo of computer screen saying Big, long notes on recent weekend project work...

Work on the RackOut "living room media" appliance (see 2012-10-07) has been proceeding. I've been focusing on the details of providing a bootable firmware image that's installed to a USB flash drive. A user will provide a USB flash drive (512MB or larger), install the firmware to the drive, and boot an old or low-power PC (1GHz or faster) off of it. That's our target hardware. Here's what now works:

  • Run the install-rackout-live program to install RackOut Live firmware to USB drive. If updating from a previous RackOut Live installation, any data partitions will be preserved.

  • Put USB flash drive in PC, hit power button, and it should boot up. After some technical text scrolls on the screen for a few seconds, screen blanks, and then full-screen message appears (scaled to resolution and aspect ratio of the screen) saying "Waiting for network to come up..." (Since last time I blogged about this, I've replaced the Web browser that RackOut used for this display with some Racket GUI code over which I have more control and that uses less resources.)

  • If plugged into network via Ethernet (wireless devices are problematic for reasons of Free Software principles), a few seconds later, fullscreen message appears, saying to direct your handheld Web browser to "rackout.lan" (or whatever DNS says your probably-DHCP'd hostname is from LAN perspective). There are half a dozen or so cases or states we can get into, and there are different messages for each, with an emphasis on resilience and concise instructions.

  • You point your smartphone/tablet/laptop's Web browser at "rackout.lan", and you get a smartphone-like interface for controlling RackOut. (This is a modern portable mobile app that runs from the Web browser rather than requiring you to install an app. And I don't have to make separate apps for for iPhone, Android, other devices, etc.).

  • Press the DVD button on smartphone remote, and (with proviso mentioned below) you get a DVD remote control on screen, including things like arrow buttons and a display of DVD title (or some code, if we can't get the title) and time position. Pop in a DVD, RackOut finds the device, hit Play, and the black fullscreen message should be replaced by a fullscreen display of the DVD playing.

  • When done watching DVD, hit Stop or Eject button on smartphone remote remote, and the black "Point your handheld Web browser at:" screen returns.

  • If you want to be fancy, you can plug a keyboard into the PC and use a magic key sequence to get a shell window, and run other GNU/Linux programs, etc. There is actually a specially-configured X and XMonad window manager running, although normally you can't tell.

  • If your USB flash drive is set up in a certain way, then the /home/user directory can be used for long-term storage of files, like music and video files (which RackOut will eventually play).

The proviso is that I'm trying to stick to official Debian software (Squeeze, with a few things from Backports) and PLaneT, and unfortunately there is one program file necessary to play many DVDs, which is not included in the main Debian software. I haven't yet looked into the details of whether or how to include this in the official RackOut firmware image, but playing DVDs on GNU/Linux machines is a pretty common thing to do. (Although, I imagine that playing legitimate DVDs would be more popular, if Internet piracy weren't so popular.) For people who want to avoid piracy and play legitimate DVDs, for now, they can get the program file from and put it in /home/user/lib on their USB flash drive.

 [smartphone screenshot of RackOut DVD remote control] There is probably a moral here, about, no matter how hard you try to do the right thing while not having big business control you, big business will keep finding ways to try to control you. :)

One feature I implemented, but haven't yet integrated into the firmware, is support for multiple screens with different resolutions, such as if you are running RackOut on an old laptop plugged into your living room TV. I have code that will detect the available screens and use heuristics to guess the "best" (usually, physically largest) screen to use for the resolution, so that you don't have your 10-inch 800x600 laptop messing things up for your wall-sized 1080p monitor. I have separate implementations for then either mirroring the same display to all screens (cropping on some screens), or disabling all but the main screen (such as if you want to keep your laptop lid open so that it doesn't overheat, without the laptop screen's light distracting you in a dark room). I also tried to implement scaling, so that the image could be mirrored on all screens and scaled to lower resolutions when necessary, but it seems my own old laptop can't do that without using Debian-unfriendly downloadable firmware blob, so I abandoned that idea.

There are a lot of non-obvious details not mentioned above, and it's been sometimes frustrating when the off-the-shelf parts need lots of massaging, but it's starting to look like a decent appliance.

Of course, the majority of the appliance is in off-the-shelf parts, and I plan to give proper credit to the most noteworthy pieces at release time -- including Racket, the Linux kernel, various GNU programs, VLC, X Window System, jQuery Mobile, XMonad, and Debian.

Probably I should get an easier 'weekend project', like repainting the walls or fixing the broken radiator.

Dell GX280 Won't Boot, and Screaming Fan Noise?

I was just given a Dell GX280 desktop PC that wouldn't boot after transportation home (in hindsight, probably due to jostling during the trip). Instead, there was a screaming fan noise like a jet taking off. I've fixed/refurbished around 100 old PCs, but my usual tricks didn't work.

I think this particular PC is several years old, but, coincidentally, just a few months ago, some blessed person on the Internet posted a YouTube that demonstrated the problem and gave a fix:

JdsComputerBuilds, "Dell GX280 Loud Fan No Boot Repair", YouTube video, 2012-05-15

That was it: it just needed continuous downward pressure applied to the edge of the CPU fan at the rear of the case. Instead of a zip tie like he did, I jammed a small plastic cap from the recycling bin in there. Per protocol, I also added a label with a date stamp, that indicated the problem and the fix. Next time I have to open the case, I'll probably glue a piece of firm foam rubber in there, in place of the cap.

Update 2013-04-12: I ended up going with the zip tie method, since the fan was still loud, and I thought it might be quieter if isolated from vibrating the lid.

Linux-Hostile WiFi Devices

While working on the RackOut appliance, with the goal of using only Free Software (and no closed-source downloadable firmware blobs), I was surprised to see that the situation with WiFi devices was getting worse rather than better.

See for the hippie explanation.

For the official RackOut Live image, I've been thinking of not having any software from the Debian non-free category, and instead focusing my effort on supporting WiFi devices that are in the spirit of GNU/Linux, such as those sold by Penguin Computing.

I had an immediate suspicion of why wireless device vendors were behaving this way despite the growing popularity of GNU/Linux. But I'll have to look into the matter more, before I start sending any glares of disapproval at particular parties.


I was skimming Reddit home page (just killing time while eating a late dinner), and ran across this story and comment:

how is this armenian less famous than kim kardashian

petrichor_28 comment on Reddit post, "TIL that Armenian finswimmer Shavarsh Karapetyan was not only a 17-time world champion, was finishing a 12-mile run when he heard a bus crash into the water. He dove down 33 ft, and rescued 20 people, 1 at a time. Oh, and 10 years later he ran into a burning hospital to save more people."

The story gets even better, when you hear of the debilitating injuries he suffered as a result.

It's funny how I hear constantly of widespread corruption in my own metro area, state, and nation, but the inspiring hero comes from the other side of the globe.

(I'll assume for this purpose that the Wikipedia story is fairly accurate, although sourcing Soviet-era Pravda is suspect.)

Racket for Appliances

 [photo of RackOut on living room screen with mobile phone remote control held up in front of it] For various reasons, one of my weekend projects is to build an open source living room media appliance, using Racket. My appliance is tentatively called RackOut.

Tonight, I did my first test install of RackOut to my test box (an old laptop, plugged into living room screen). It booted up and displayed the welcome screen that you see in the photo, telling anyone in the living room (on the same home Wi-Fi LAN) to point their Web browsers at rackout.lan. When I put this address into my Android phone's browser, I got a mobile Web app remote control for the appliance.

At this moment, RackOut only plays DVDs (using VLC). The next big functionality step will probably be to add playing of a music library. Third big functionality might be an interface for ripping personal CDs onto the RackOut appliance. A personal video library feature will probably follow soon. I'll probably do something for streaming of whatever PBS, NPR, the BBC, etc. make available. I haven't yet decided what to do about commercial sites and services that currently require closed-source Flash plugins or DRM'd players -- I'll probably just wait for them to be playable with open source code, perhaps based on HTML5. I plan to not have support for anything involving BitTorrent, unless there's a really good, legal reason to do so, such as it becomes more popular for legal P2P distribution of video.

Currently, RackOut is set up to be distributed in source code form via PLaneT and as a binary distribution. I plan to also make a bootable USB stick image for the complete appliance software stack, based on GNU/Linux.

Aside: People talk about whether such-and-such language platform can be used for "embedded systems". Racket can certainly be used for some hefty embedded systems.

Sudo, Hostname, etc. in Racket

I'm trying to package up reusable Racket modules, as I implement little bits of general-purpose functionality for my latest Racket app. This week, sudo and hostname.

 [screenshot of small text in regulations document PDF file] When you're trying to finish reading through a 2,009-page PDF file of government regulations before end of the work-week, and you have approx. 1,200 pages left to go, it's good to be reminded that alcohol and voluminous regulations don't mix:

31.205-51 Costs of alcoholic beverages.
Costs of alcoholic beverages are unallowable.

Reminds me: early in my career, my employer would have a "Friday at four" get-together, at which someone would bring in these huge wash tubs filled with ice and canned beverages. If I recall correctly, some contained alcohol. I was a teenager, and occasionally I'd notice someone watching out of corner of their eye as I went to the tubs to grab a soda (not a beer, like I suspected they feared). With all my sobriety, I probably would've made a good accountant.

Earlier to... 2012-09

© Copyright Neil Van Dyke      Contact