See recent comments. RSS feed of all comments. Raw dump of all comments for research purposes.
ImageMagick book
MythTV book
|
 |
|
 |
|
This page documents the various toys I have in my collection, and what I needed to do to get them to work, normally with Linux. I've done this because it's handy to be able to get them to work again with new machines or whatever. I'll be doing a little bit of back capture of old toys over time as I feel in the mood.
|
|
|
|
|
 |
|
 |
|
Sat, 16 May 2009
|
|
|
|
|
 |
|
 |
|
Thu, 14 May 2009
|
|
|
|
|
 |
|
 |
|
Wed, 25 Feb 2009
|
|
|
|
|
 |
|
 |
|
I bought two different versions of the Roomba battery repack kits from ebay and the first one arrived today. This is the nicer of the two versions, because it includes pre-soldered tabs on the battery wires. It cost me an extra dollar, and was about $26 including shipping. To be honest, if I'd found this one first I probably wouldn't have bought the one without the tabs.
Here is the contents of the kit:
Note that there are no instructions in the kit.
The first step is to open up the battery case. The screws are pretty obvious, although the triangular screw driver than the kit ships with sure made this easier. Then you need to crack open the case, which for some reason is glued shut. That took a bit of patience, a jewelers screw driver, and in the end a hammer. I started out not wanting to bash the case too much, but it was glued pretty solidly. In the end it opened up just fine though:
Now you just need to put the new pack in, making sure to get the tabs in the right places. Screw the lid shut, and go for it. My roomba is charging at the moment, and I'll let you know how it goes once that's done.
(You might recall this means that I now have two fully functional roombas. I'm thinking of building the serial control cable, hooking up arduinos, and having some sort of swarming vacuum system. Its a pity I don't know anything about swarming algorithms...)
Tags for this post: blog( ) toys( ) roomba( )
posted at: 16:43 | path: /diary/toys/roomba | permanent link to this entry
|
|
|
|
|
 |
|
 |
|
Sun, 22 Feb 2009
|
|
|
|
|
 |
|
 |
|
Wed, 26 Dec 2007
|
|
|
|
|
 |
|
 |
|
I've had a Via Eden M10000 literally lying around since soon after I moved to the US two years ago, and I finally decided that it was time for a full blown home workstation the other day, having got fed up with the small screen on my laptops. Sometimes I really miss my 30 inch monitor at work, and the 24 inch I am using at home is a much better substitute than a laptop screen.
Anyway, getting the machine working was surprisingly difficult given its a three or four year old design. The problems:
- The PCI 802.11g wireless card didn't work. In fact, the machine wouldn't boot with it installed. I suspect this was a PCI version problem, as I have had pain with this card in the past.
- The PCI 802.11b wireless card I tried next wasn't much better. The connection would drop out randomly, and the machine would occasionally lock up. This was the card I used as my first access point about six years ago (using hostap), so perhaps its just old. It got swapped out as well.
- The Belkin USB 802.11g thingie didn't work reliably. It would stay connected to the network for five minutes before something went wrong. This made me annoyed, especially when it turns out this is because the latest release of Ubuntu (gutsy) installs an old version of the rt73usb driver, which is known not to work with this card. Following these instructions from the canonical wiki which tell you to install drivers from here fixed the problem. Its annoying that Ubuntu ships with known broken drivers though.
- Next, video. The video card built into the mother board sucks. I'm running a t24 inch LCD at 1920x1200, and there was significant ghosting on the monitor. Additionally, I couldn't run at 24 bit, I had to use 16 bit because the video card was running out of RAM bandwidth.
- Not to worry, I installed a Matrox G450 I had lying around, and now the monitor works nicely as well, with no ghosting.
- Finally, the whole thing is much louder than I expected from an Eden machine (there is a fan on the board, a fan in the case, and the hard disk). Then again, given I built the entire machine for $90, I can't complain too much.
Tags for this post: blog( ) toys( )
posted at: 15:25 | path: /diary/toys | permanent link to this entry
|
|
|
|
|
 |
|
 |
|
Mon, 18 Jun 2007
|
|
|
|
|
 |
|
 |
|
Fri, 16 Mar 2007
|
|
|
|
|
 |
|
 |
|
Sat, 03 Mar 2007
|
|
|
|
|
 |
|
 |
|
Mon, 26 Feb 2007
|
|
|
|
|
 |
|
 |
|
Sat, 24 Feb 2007
|
|
|
|
|
 |
|
 |
|
Wed, 21 Feb 2007
|
|
|
|
|
 |
|
 |
|
Wed, 07 Feb 2007
|
|
|
|
|
 |
|
 |
|
Sun, 31 Dec 2006
|
|
|
|
|
 |
|
 |
|
Thu, 28 Dec 2006
|
|
|
|
|
 |
|
 |
|
Tue, 26 Dec 2006
|
|
|
|
|
 |
|
 |
|
Fri, 18 Aug 2006
|
|
|
|
|
 |
|
 |
|
|
|
|
|
|
 |
|
 |
|
|
|
|
|
|
 |
|
 |
|
I've had some troubles with drivers for my Belkin 375VA USB UPS, not that I have tried very hard. I finally got it working today with the help of Will the intern (who rocks by the way) and only a little bit of effort, so I thought I should document it here so I know how to next time. First off, you need to install nut and nut-usb for Ubuntu (or whatever you're using):
$ sudo apt-get install nut nut-usb
Now, create a configuration entry for the USB UPS. This lives in /etc/nut/ups.conf, and mine looks like this:
|
[belkinusb]
driver = newhidups
port = auto
desc = "Belkin UPS, USB interface"
vendorid=050d
The vendor ID here needs to match the UPS, which for my Belkin is 050d:0375. Next, you need a upsd.conf file in the same directory. Mine looks like this:
ACL all 0.0.0.0/0
ACL localhost 127.0.0.1/32
ACCEPT localhost
REJECT all
|
This stops hosts other than local host connecting to the daemon. Now, you need a upsd.users file, which defines what users can use the UPS:
[admin]
password = thisisnotthepassword
allowfrom = 127.0.0.1
actions = set
instcmds = all
Now, start the USB UPS driver. Let's start it in debug mode first...
$ sudo /lib/nut/newhidups -u nut -D -a belkinusb
rk UPS Tools: New USB/HID UPS driver 0.28 (2.0.3)
debug level is '1'
Detected a UPS: Belkin /Belkin UPS
Using subdriver: Belkin HID 0.1
Path: UPS.BELKINConfig.BELKINConfigVoltage, Type: Feature, Value: 120.000000
Path: UPS.BELKINConfig.BELKINConfigFrequency, Type: Feature, Value: 60.000000
Path: UPS.BELKINConfig.BELKINConfigApparentPower, Type: Feature, Value: 375.000000
Path: UPS.BELKINConfig.BELKINConfigBatteryVoltage, Type: Feature, Value: 12.000000
Path: UPS.BELKINDevice.BELKINModelString, Type: Feature, Value: 66.000000
Path: UPS.BELKINDevice.BELKINModelStringOffset, Type: Feature, Value: 0.000000
Path: UPS.BELKINDevice.BELKINUPSType, Type: Feature, Value: 1.000000
Path: UPS.BELKINControls.BELKINTest, Type: Feature, Value: 0.000000
Path: UPS.BELKINControls.BELKINAudibleAlarmControl, Type: Feature, Value: 2.000000
Path: UPS.BELKINControls.BELKINDelayBeforeShutdown, Type: Feature, Value: 0.000000
Path: UPS.BELKINControls.BELKINDelayBeforeStartup, Type: Feature, Value: 0.000000
Path: UPS.BELKINPowerState.BELKINInput.BELKINVoltage, Type: Feature, Value: 1208.000000
Path: UPS.BELKINPowerState.BELKINInput.BELKINFrequency, Type: Feature, Value: 599.000000
Path: UPS.BELKINPowerState.BELKINOutput.BELKINVoltage, Type: Feature, Value: 1208.000000
Path: UPS.BELKINPowerState.BELKINOutput.BELKINFrequency, Type: Feature, Value: 599.000000
Path: UPS.BELKINBatterySystem.BELKINVoltage, Type: Feature, Value: 139.000000
Path: UPS.BELKINBatterySystem.BELKINCharge, Type: Feature, Value: 100.000000
Path: UPS.BELKINStatus.BELKINPowerStatus, Type: Feature, Value: 49152.000000
Path: UPS.BELKINStatus.BELKINBatteryStatus, Type: Feature, Value: 16.000000
Path: UPS.PowerSummary.iProduct, Type: Feature, Value: 20.000000
Path: UPS.PowerSummary.iSerialNumber, Type: Feature, Value: 42.000000
Path: UPS.PowerSummary.iDeviceChemistry, Type: Feature, Value: 68.000000
Path: UPS.PowerSummary.iOEMInformation, Type: Feature, Value: 4.000000
Path: UPS.PowerSummary.Rechargeable, Type: Feature, Value: 1.000000
Path: UPS.PowerSummary.Charging, Type: Input, Value: 1.000000
Path: UPS.PowerSummary.Charging, Type: Feature, Value: 1.000000
Path: UPS.PowerSummary.Discharging, Type: Input, Value: 0.000000
Path: UPS.PowerSummary.Discharging, Type: Feature, Value: 0.000000
Path: UPS.PowerSummary.ConfigVoltage, Type: Feature, Value: 12.000000
Path: UPS.PowerSummary.Voltage, Type: Feature, Value: 1208.000000
Path: UPS.PowerSummary.Current, Type: Feature, Value: 0.000000
Path: UPS.PowerSummary.CapacityMode, Type: Feature, Value: 2.000000
Path: UPS.PowerSummary.RemainingCapacity, Type: Input, Value: 100.000000
Path: UPS.PowerSummary.RemainingCapacity, Type: Feature, Value: 100.000000
Path: UPS.PowerSummary.RunTimeToEmpty, Type: Input, Value: 120.000000
Path: UPS.PowerSummary.RunTimeToEmpty, Type: Feature, Value: 120.000000
Path: UPS.PowerSummary.DesignCapacity, Type: Feature, Value: 100.000000
Path: UPS.PowerSummary.FullChargeCapacity, Type: Feature, Value: 100.000000
Path: UPS.PowerSummary.WarningCapacityLimit, Type: Feature, Value: 30.000000
Path: UPS.PowerSummary.CapacityGranularity2, Type: Feature, Value: 1.000000
Path: UPS.PowerSummary.RemainingCapacityLimit, Type: Feature, Value: 30.000000
Path: UPS.PowerSummary.CapacityGranularity1, Type: Feature, Value: 1.000000
Path: UPS.PowerSummary.ACPresent, Type: Feature, Value: 1.000000
Path: UPS.PowerSummary.ACPresent, Type: Input, Value: 1.000000
Path: UPS.PowerSummary.BelowRemainingCapacityLimit, Type: Input, Value: 0.000000
Path: UPS.PowerSummary.BelowRemainingCapacityLimit, Type: Feature, Value: 0.000000
Path: UPS.PowerSummary.ShutdownImminent, Type: Input, Value: 0.000000
Path: UPS.PowerSummary.ShutdownImminent, Type: Feature, Value: 0.000000
upsdrv_updateinfo...
upsdrv_updateinfo...
=>Got 1 HID Objects...
upsdrv_updateinfo...
upsdrv_updateinfo...
upsdrv_updateinfo...
[snip]
You get the idea. You can see here that it's found the UPS, and listed a bunch of information about the USB capabilities of the device. It will then sit in a loop forever checking the status for the device. Now, let's hit control C on that, and start it as a daemon...
$ sudo /lib/nut/newhidups -u root -a belkinusb
Network UPS Tools: New USB/HID UPS driver 0.28 (2.0.3)
Detected a UPS: Belkin /Belkin UPS
Using subdriver: Belkin HID 0.1
Next, start the NUT UPS daemon...
$ sudo upsd
Network UPS Tools upsd 2.0.3
Connected to UPS [belkinusb]: newhidups-auto
Synchronizing...done
Finally, you can use the command line tool to check on the state of the UPS...
$ upscmd -l belkinusb@localhost
Instant commands supported on UPS [belkinusb@localhost]:
test.battery.start.quick - Unavailable
test.battery.start.deep - Unavailable
test.battery.stop - Stop the battery test
beeper.on - Enable the UPS beeper
beeper.off - Disable the UPS beeper
load.off - Turn off the load immediately
Unfortunately, the UPS doesn't support power cycling it's ports (which is what I was really hoping for), it only supports powering them down, and then waiting for human intervention, which is a shame. You can still shutdown the machine gracefully when things are going flat.
posted at: 09:51 | path: /diary/toys | permanent link to this entry
|
|
|
|
|
 |
|
 |
|
Thu, 17 Aug 2006
|
|
|
|
|
 |
|
 |
|
In the previous post I mentioned that I had a couple of bad experiences with the Debian installer and the Linksys upload web page. Luckily, it's really easy to recover from these. You do that with the magical RedBoot sequence (RedBoot is the boot loader the slug uses). Do something like this:
Download the Linksys firmware from their web site. I tried this technique with the Debian installer image and it didn't work, so I only know it works with the Linksys firmware. Put that firmware on a web server on your local LAN which the slug will have access to. Then, connect to the boot loader. You do that by running this command...
sudo arping -f 192.168.0.1; telnet 192.168.0.1 9000
...and then power cycling the slug. You'll end up with this:
$ sudo arping -f 192.168.0.1; telnet 192.168.0.1 9000
ARPING 192.168.0.1 from 192.168.0.100 eth0
Unicast reply from 192.168.0.1 [00:0F:66:7D:1E:09] 10.717ms
Sent 17 probes (17 broadcast(s))
Received 1 response(s)
Trying 192.168.0.1...
Connected to 192.168.0.1 (192.168.0.1).
Escape character is '^]'.
== Executing boot script in 1.670 seconds - enter ^C to abort
^C
RedBoot>
You have to be pretty quick on the draw here with the control C, as you have about 2 seconds to hit the sequence before the slug starts to boot normally instead. Now that you're logged in, you can download the new firmware:
ip_address -h 192.168.1.100 The IP of the HTTP server
load -r -v -b 0x01000000 -h 192.168.0.100 -m http /NSLU2_V23R25.bin
Load the firmware file
fis write -f 0x50060000 -b 0x01060000 -l 0x7a0000
Write it
reset Reboot
And you should be back at the Linksys firmware. Note that you will still have the network settings that you had set before...
Tags for this post: blog( ) toys( ) nslu2( )
posted at: 18:29 | path: /diary/toys/nslu2 | permanent link to this entry
|
|
|
|
|
 |
|
 |
|
 |
I've been sitting on a Linksys NSLU2 for a few weeks until I time to hack at it. That time came today. The NSLU2 (called a slug) is a Linksys NAS device, which runs Linux natively. There are two USB 2.0 ports, and a wired ethernet port. The CPU runs at 133MHz normally, but that can be bumped up to 266MHz by removing a resistor from the board. Thanks for the NSLU2 Linux project you can also run your own distro on them, and do cool random things. Oh, and they're cheap at about $60 to $90 US.
So, let's talk about the install of Debian on this thing. First off, you need to use the Linksys user interface to configure the network settings. I recommend a static IP, because otherwise it's going to use DHCP, which will make it hard to find later...
There is a Debian installer option, which uploads firmware via the Linksys web interface, and then you run through the installation with ssh. That's a great idea, and I would be much more keen on it if it had worked. I gave it a couple of tries, and then declared it not working.
Instead, I went for the DebianSlug image, which isn't as Debiany as the Debian installer option. Think ipkg instead of dpkg. You need to grab the firmware image, and a program called upslug2, for which you can find a source download at SourceForge. Do the normal source building thing with upslug2.
Next, you need to grow another arm, and try the magical reset sequence, which is documented under the heading "Flashing the image" on this page. Then, run upslug like this:
$ sudo ./upslug2 -i path to firmware image from before
Password:
LKG7D1E09 00:0f:66:7d:1e:09 Product ID: 1 Protocol ID:0 Firmware Version: R23V63 [0x2363]
Upgrading LKG7D1E09 00:0f:66:7d:1e:09
. original flash contents * packet timed out
! being erased - erased
u being upgraded U upgraded
v being verified V verified
Display:
<status> <address completed>+<bytes transmitted but not completed>
Status:
* timeout occured + sequence error detected
7983f+000000 ...u------------------------------------------------------------
This takes a while. Be patient, it probably hasn't crashed. Probably.
The slug will reboot, and now you can ssh into it to play. Use the username root, and the password opeNSLUg. At this point it's a useful computer, and you can keep it like this if you don't mind using ipkg for everything and dealing with the rather limited set of packages available. If you need pointers on where to go from here, then I recommend you try a turnup help on the command line, and play with ipkg update and it
s friends ipkg list and ipkg install. There are more instructions here if you want them.
|
Tags for this post: blog( ) toys( ) nslu2( )
posted at: 18:23 | path: /diary/toys/nslu2 | permanent link to this entry
|
|
|
|
|
 |
|
 |
|
|
|
|
|
|
|