andybotting.com

10 Oct, 2008

OpenWRT on the D-Link DSL-502T (Gen 1)

Posted by: Andy Botting In: Personal

I’ve had this old D-Link DSL-502T sitting around, basically working. When I moved place just recently, I took the opportunity to look into getting OpenWRT installed on this thing, basically because I wanted something I could do DNS/DHCP serving on, while giving me some shell access. The D-Link firmware is kinda dodgy, and I always enjoy installing Linux onto something new.

Chris Pascoe’s page is quite dated now, but was a good place to start. Much development has gone into OpenWRT and the AR7 platform, so much of his information is now incorrect. The best place for info is the OpenWRT wiki page for the DSL-502T. It’s much more comprehensive and many of the patches and hacks that Chris Pascoe needed to do have be rolled into the OpenWRT trunk.

Much of this information has been copied and pasted from the above sites. Credits to both of them.

Start by grabbing the SVN trunk of OpenWRT.

$ svn co https://svn.openwrt.org/openwrt/trunk

Once this is done, you can grab any packages you’re interested in. Note that you can install these later using the opkg command once your firmware is running. I grabbed ntpclient, tcpdump, openvpn and the ddns-scripts.

cd openwrt/trunk/package
svn co https://svn.openwrt.org/openwrt/packages/net/ntpclient
svn co https://svn.openwrt.org/openwrt/packages/net/tcpdump
svn co https://svn.openwrt.org/openwrt/packages/libs/lzo
svn co https://svn.openwrt.org/openwrt/packages/net/openvpn
svn co https://svn.openwrt.org/openwrt/packages/net/ddns-scripts

Select firmware components
Enter into the folder and run make menuconfig. Select at least:

  • Target System -> TI AR7 [2.6]
  • Target Profile -> No Wifi
  • Target Images -> SquashFS
  • Image configuration -> LAN IP Address (not required, but makes it easier if you’re already running a network)
  • Base system -> br2684ctl (only needed by PPPoE)
  • Network -> ppp -> ppp-mod-pppoa and/or ppp-mod-pppoe, depending on your ADSL type
  • Kernel Modules -> Network Devices -> select Annex A (which is ADSL over POTS. B is for ADSL over ISDN)

Make sure that you enable your packages from above in the config. E.g. Network -> Time Synchronization -> ntpclient

Quit and save the config.

Get the build dependencies.

For Ubuntu, you’ll need:
sudo apt-get install flex bison autoconf zlib1g-dev libncurses5-dev automake g++ patch gawk

Build your image by doing
make -j3 (for a dual-core system)

The final firmware produced by the build is located in bin/openwrt-ar7-squashfs.bin.

Uploading the initial OpenWRT firmware.

To upload the initial OpenWRT image, there is a tool called adam2flash. It can be found in the OpenWRT trunk, under the scripts directory. To use it, you need to execute the script in the first second or so of the machine being turned on. It’s recommended that you don’t connect the modem directly to your computer, but use a switch in between. This is in case it takes too long for the ethernet cards to negotiate.

One thing I had trouble with was finding out what the initial IP address of the device is. Before you overwrite your firmware, you can find this out by using telnet. Enable the telnet remote management from the D-Link interface and then check out the ADAM2 environment variables. From memory, you should be able to find something by grepping around /proc for a string starting with my_ipaddress. Mine was 10.1.1.199, but many others have mentioned 192.168.1.1.

Lots more info about the ADAM2 bootloader can be found at the Seattle Wireless site. http://www.seattlewireless.net/ADAM2

Here’s the steps:

  • Download a copy of the standard D-Link firmware so you can revert to it if things go wrong! You need the “web upgrade” .BIN version of the firmware, not the .EXE version. D-Link firmware can be downloaded from (for example) http://www.dlink.com.au/tech/
  • Configure your PC for a static IP address on the same subnet as your modem’s default IP address.
  • Choose an IP address for your modem. The OpenWrt firmware will use 192.168.1.1 after rebooting (unless you set it in the menuconfig), so that’s a sensible choice.
  • Turn off the modem.
  • Run adam2flash-502T.pl, providing the modem IP address you chose and the new firmware to upload. If you are changing between D-Link and OpenWrt firmware, you will also need to specify -setmtd1 (if you forget this, the script will tell you that you need it and exit)
  • Turn on the modem.
  • Wait for the upload to complete. Here’s a sample session:

$ scripts/adam2flash-502T.pl 192.168.1.1 -setmtd1 bin/openwrt-ar7-squashfs.bin
Looking for device: ..... found!
ADAM2 version 0.22.2 at 192.168.1.1 (192.168.1.1)
Firmware type: OpenWRT (little-endian)
logging into ADAM2 bootloader.. ok.
checking hardware.. AR7RD / DSL-502T.
checking MTD settings.. ok.
Firmware size: 0x00280004
Available flash space: 0x003e0000
Preparing to flash.. ok.
Erasing flash and establishing data connection (this may take a while): ok.
Writing firmware: ............. lots of dots ......... done.
Rebooting device.

If you have trouble with this (as I did) you might need to hack the adam2flash-502T script a little. I commented out the whole section about doing the UDP probe part, and just passed the IP address right into the $box variable.

Getting the LEDs to work
Grab a copy of the ledsetup script found in the scripts directory of your SVN checkout. Install it into /etc/init.d and it should run on start-up. This will give you the ethernet light, and also map the USB light to ppp0. Very handy.

DSL Sync
When I finally got my ADSL connected in the new place, I couldn’t get DSL sync. It seemed to be because I had the wrong modulation set.

When you boot the device, you should see something like this in your dmesg.

Registered device TI Avalanche SAR
Sangam detected
requesting firmware image "ar0700xx.bin"
avsar firmware released
tn7dsl_set_modulation : Setting mode to 0xffff
Creating new root folder avalanche in the proc for the driver stats
Texas Instruments ATM driver: version:[7.03.01.00]
DSL in Sync

The line about setting the mode to 0xffff is important. For me, my initial mode was being set to 0×7f (which wasn’t for ADSL2+). The 0xffff mode means to negotiate the best speed (ADSL 1 or 2, 2+). This is set in the ADAM2 environment so if this needs to be changed, you’ll have to reboot your modem and use the onboard FTP server’s commands SETENV, UNSETENV, GETENV (all caps matter), by doing telnet to your modem’s default IP address on port 21.

$ telnet 10.1.1.199 21
220 ADAM2 FTP Server ready.
530 Please login with USER and PASS.
USER adam2
331 Password required for adam2.
PASS adam2
230 User adam2 successfully logged in.
GETENV my_ipaddress
200 GETENV command successful
my_ipaddress 10.1.1.199
GETENV modulation
200 GETENV command successful
modulation 127
SETENV modulation,65535
200 SETENV command successful

You can also set/reset your modem’s default IP address here with the variable my_ipaddress.

Backing up and restoring your configuration changes
OpenWRT saves your filesystem (effectively, configuration) changes in a JFFS filesystem mounted at /jffs. As this filesystem is dynamically sized based upon the size of your kernel and SquashFS, uploading a new firmware image may cause your configuration to be lost.

You can back your changes up to a file on your local machine via ssh:
ssh root@172.18.0.1 tar cf - /etc/ > dsl502t-backup.tar

To restore a saved configuration, we reverse the direction of the transfer. The following command checks the configuration copied properly before deleting the old configuration:
ssh root@172.18.0.1 'cat > /tmp/.r.$$ && tar tf /tmp/.r.$$ && cd / && rm -rf etc/* && tar xf /tmp/.r.$$' < dsl502t-backup.tar

Updating your OpenWRT install
SCP over the new image
desktop# scp bin/openwrt-ar7-squashfs.bin root@172.18.0.1:/tmp/newimg

Log into the OpenWRT device, and use the mtd command to write the new image:
openwrt# mtd -r write /tmp/newimg linux

This should then go through a write/verify process, and once completed it will reboot into the new image.

31 Aug, 2008

Mastering MythTV MPEG2 files to DVD

Posted by: Andy Botting In: Geek | Linux

MythTV is a wonderful project, which I’ve been running for nearly 12 months. In the AFL season 2007, I was downloading the Geelong games from the internet. Unfortunately, you’re at the mercy of whomever was encoding the game, in terms of quality. By Geelong winning the premiership last season, most of the games were broadcasted on free-to-air TV and I was recoding them all using MythTV, with the intention of putting them on DVD later.

I tried using MythArchive, but it was clumsy and didn’t give me enough control of the DVD creation process. I wanted the video to fit exactly on a single sided DVD, with minimal loss of quality, so I had to the process manually.

The problem I found trying to encode MythTV’s mpeg2 files was that you would always get the the video and audio out of sync. The length of the broadcast was around 3 hours long, so by the end, the sound could be more than a second behind the video. I think this is due to missing little pieces of the data from the broadcast.

To fix the broadcasting issues, use ProjectX to split the video and audio
java -jar /usr/share/java/ProjectX.jar -demux -out <your tmp directory> -name <your output filename prefix> <input mythtv recording file>

You’ll see some output like this:


demuxing DVB MPEG-TS file 1010_20080802192500.mpg
!> PID 0x0 (PAT) (0 #1) -> ignored
!> PID 0x100 (PMT) (188 #2) -> ignored
ok> PID 0x200 has PES-ID 0xEA (MPEG Video) (376 #3)
ok> PID 0x240 has PES-ID 0xBD (private stream 1) (TTX)  (5264 #29)
ok> PID 0x28B has PES-ID 0xBD (private stream 1) (20680 #111)
ok> PID 0x28A has PES-ID 0xC0 (MPEG Audio) (84412 #450)
-> video basics: 720*576 @ 25fps @ 0.7031 (16:9) @ 9000000bps, vbvBuffer 95
-> starting export of video data @ GOP# 0
!> dropping useless B-Frames @ GOP# 0 / new Timecode 00:00:00.000
6 %!> PID 0x200 -> packet 2687051 @ pos. 505165400 out of sequence (15/11) (shifting..) (~00:12:34.480)
!> PID 0x200 -> packet 2687616 @ pos. 505271620 out of sequence (1/14) (shifting..) (~00:12:34.960)
12 %!> PID 0x200 -> packet 5943135 @ pos. 1117309192 out of sequence (12/6) (shifting..) (~00:27:44.080)
16 %!> PID 0x200 -> packet 7860852 @ pos. 1477839988 out of sequence (8/14) (shifting..) (~00:36:38.320)
17 %!> PID 0x200 -> packet 8427938 @ pos. 1584452156 out of sequence (6/10) (shifting..) (~00:39:16.720)

Once this is done, multiplex the Video and Audio files back together again
mplex -f 9 -o <your output filename> <video file>.m2v <audio file>.mp2

This should give us a nice clean MPEG2 file, which we can then cut all the ads out of. Rather than using something like nuvexport and making the ads in MythTV itself, I found it much easier to use Avidemux.

Load the video into Avidemux, then

  • Use the arrow keys and mousewheel to find cutting spots.
  • Use the A_> and <_B buttons to mark the start and finish of ads
  • Hit the delete key to cut the ads

Once you’re done, I always save a project file, in case Avidemux crashes.

You can then load the ‘DVD’ profile from the Auto -> DVD menu. Leave the ratios at 1:1.

Hit the calculator button, select Format: MPEG and Medium: DVD5. Hit apply, and then close.

Hit the configure button underneath the video part on the left. Configure the video output to Interlaced (I used TFF, but prob doesn’t matter) and 16:9 Aspect ratio.

Then, just save the new encoded video. On my AMD 3200+ machine, it takes somewhere around 5-6 hours to encode about 2.5 hours of video.

For me, I found that the Avidemux encoding sometimes failed in the 2nd pass at one of my defined cutpoints. To combat this, I opened the output video to the end of the file to find out which cutpoint the video failed encoding at. With this, I would open up my project file in Avidemux again, and remove a few extra frames either side of my original cut. This was usually enough to get it over the line.

Once this is done, use DeVeDe to create the DVD ISO file.

When adding the newly encoded MPEG PS file, make sure you open the properties of the file click ‘Advanced Options’, and in the Misc tab, select the checkbox ‘This file is already a DVD/xCD-suitable MPEG-PS file’. Don’t worry if DeVeDe tells you the file is 106%, it will fit on a 4.7 DVD.

Once this is done, you should have a nice ISO image which you can burn straight to disc.

22 Aug, 2008

Latest spam, featuring Britney Spears

Posted by: Andy Botting In: Funny

Sometimes, I enjoy receiving spam. Lately, I’ve noticed a bunch of Britney Spears related spam, which I’ve had a good laugh at.

The emails all seem to have a link in the body which says something like Watch Video or Click Here with some seedy looking photo. Obviously, you wouldn’t click them… but the subject of some of these I find amusing.

  • Britney’s Dad sends conservatorship lawyer to help Amy Winehouse
  • Britney Spears’ actions too Far Out for Newspaper
  • Britney Spears and Paris Hilton to Visit Burma
  • Britney Spears in training to become lesbian
  • Britney Spears Kidnap Plot Foiled
  • Britney Spears Out of Hospital and Fighting for Palestinian Cause
  • Britney Spears Picks Nose
  • Britney Spears Plans To Auctions Off Her Children On EBay
  • Britney Spears Recording New Album - Forgotten How To Sing
  • Britney Spears Stashed Guns in her Vagina - Papparazzi Duck for Cover
  • Britney Spears Threatens to Ditch Greenback
  • Britney Spears Vagina Taken To Hospital
  • California Storm is Britney Spears Fault
  • New Britney’s paparazzi video. She must be really crasy
  • Britney Spears Applies For Barack Obama Masseuse Job?
  • Britney Spears is dating Obama
  • Britney sues vagina for divorce
  • Britney shaves her head again. Also seen shopping naked
  • Britney in Gaza’s shocking rehab romance
  • Britney Spears Not Bipolar - New World Order Conspiracy Afoot

.. and my favourite:

  • Britney Spears Is Actually A Piece Of Broccoli

I’m seeing a trend of these for Paris Hilton also.

  • Paris Hilton Becomes Mormon — Marries Paparazzi
  • Paris Hilton Returned By Aliens
  • Paris Hilton: I will give my Body to the Winner of the French Open

Ah, spammers. When will you just get a life.

21 Jul, 2008

Nokia Sports Tracker

Posted by: Andy Botting In: Personal | Running

It’s been a while since I’ve posted on here, but I wanted to share something cool that I found.

It’s called the Nokia Sports Tracker and you can use it for tracking your workouts. As friends of mine will know, I do a bit of running. Sometimes it’s handy to know how far you’ve gone or how quickly you did it in.

Just put your recent Nokia phone with built-in GPS (or add a bluetooth GPS unit, if you don’t have it built in) in your pocket when you go running, cycling, walking to track your distance and speed. What’s really cool is that if you have mobile internet access, you can send your data in real-time so others can see your progress plotted on a google maps interface.

Last Saturday, I decided to try it out. You can check out my run details here:

http://sportstracker.nokia.com/nts/workoutdetail/index.do?id=305325

21 Dec, 2007

Finally getting everything to work on Gutsy

Posted by: Andy Botting In: Geek | Linux | Ubuntu

I had everything working quite well on my Macbook Pro (Core 2 Duo) with Ubuntu Feisty, but due to some badness from the shitty, shitty ATI fglrx driver, I couldn’t use Gutsy with everything working.

The new kernel in Gutsy moved from the SLAB allocator to the SLUB allocator. (Btw, I have no idea what that actually is..). So, this meant that I couldn’t put the machine into Suspend mode while using the ATI drivers. Although the RadeonHD driver works quite well, it means that I can’t actually play BZFlag.

To solve this, I ended up compiling my own custom kernel for Ubuntu, and switching it to use the SLAB allocator. I thought it would be appropriate to blog it here in case anyone else is interested.

I followed much of the instructions from the Macbook Pro page on the Ubuntu Wiki, but I built a deb package for my kernel. So have a look at the Unofficial ATI linux driver wiki page for installing on Ubuntu Gutsy.

Here we go:

Symlink the firmware directory. This is usually needed for the initrd.
sudo ln -sf /lib/firmware/2.6.22-14-generic /lib/firmware/2.6.22.9

Install all the required packages
sudo apt-get install linux-source libncurses5-dev build-essential kernel-package fakeroot module-assistant build-essential dh-make debhelper debconf libstdc++5 linux-headers-generic

Extract the kernel source, import the old config and start the make config
cd /usr/src/
sudo tar -xvjpf linux-source-2.6.22.tar.bz2
sudo ln -sf linux-source-2.6.22 linux
cd linux
sudo cp /boot/config-2.6.22-14-generic .config
sudo make menuconfig

In the menu, browse to ‘General setup‘, then select ‘Choose SLAB allocator‘ at the last entry. Change this from ‘SLUB’ to ‘SLAB‘, then exit ‘General setup’.

Select ‘Processor type …‘ and ‘Processor family‘ and change the CPU from ‘Generic-x86-64′ to ‘Intel Core2 / newer Xeon‘, exit ‘Proccessor type …’.

Go to ‘Device Drivers‘ > ‘Sound‘ > ‘Advanced Linux Sound Architecture‘ > ‘PCI devices‘ and Hit the M key to enable the ‘Intel HD Audio‘ module.

I think that Ubuntu packages this driver as part of an extra modules package, but the in-kernel one works fine

Save the new config and exit.

UPDATE: Edit the file /etc/kernel-pkg.conf, and add the line:
CONCURRENCY_LEVEL = 3

This should make sure of both cores when compiling your new kernel. This will take it down from about 1 hour to still timing it, please update

Build your new kernel package
time make-kpkg --rootcmd fakeroot --uc --us --initrd binary

I think it’s a good idea to boot into your new kernel here. Make sure everything’s working before you move on.

Download the ATI driver installer ati-driver-installer-7-11-x86.x86_64.run

Build Ubuntu fglrx packages from the ATI driver script
sudo bash ati-driver-installer-7-11-x86.x86_64.run --buildpkg Ubuntu/gutsy

Install the fglrx packages
sudo dpkg -i xorg-driver-fglrx_8.433-1*.deb fglrx-kernel-source_8.433-1*.deb fglrx-amdcccle_8.433-1*.deb

Build the fglrx kernel module package.
sudo module-assistant prepare,update
sudo module-assistant build,install fglrx -f
sudo depmod -a

Install the fglrx kernel module
sudo dpkg -i fglrx-kernel-2.6.22.9_8.433-1+2.6.22.9-10.00.Custom_i386.deb

Make sure you’ve got fglrx set in the device section of your xorg.conf.

That should do it.

22 Nov, 2007

Blogging from my Internet tablet

Posted by: Andy Botting In: Personal

I am blogging from my Internet tablet. Nice.

11 Nov, 2007

Skype for Linux: Finally, with video

Posted by: Andy Botting In: Personal

About time, Skype guys! We’ve only been waiting for ages for the Linux client to catch up to the Mac and Windows versions to get video.

I have this feeling that it’s been brought on my the new Nokia N810 internet tablet to be released shortly this month. The N800 (which I have) does include Skype, but sans video. I think that video support was something that the Nokia guys would have been pushing for with the N810. I’m really looking forward to using Skype with Video on the N800 once the new version of the Internet Tablet OS is released.

Unfortunately, Skype’s video doesn’t work on my MacBook Pro presumably due to ATI’s shithouse proprietary driver. Even with the newest 8.42.3 driver (which was supposed to be some massive improvement) they are still crap.

Note to ATI: I’m never, ever buying ANYTHING that contains one of your GPU’s. Ever.

11 Nov, 2007

Matt’s bucks day

Posted by: Andy Botting In: Personal

paintball.jpg

Last weekend, we went paintballing at Hot Shots in Anakie to celebrate the fact that someone is crazy enough to want to marry him :) hehe

Playing in Anakie was great because of the bush setting, and I would recommend looking the Hot Shots guys up if you wanted to do paintballing. As you can see from the photo, Matt got the pretty pink overalls, including a target painted on the back.

29 Sep, 2007

Geelong: AFL Premiers 2007

Posted by: Andy Botting In: Personal

geel_tape_l.jpg

Incredible game, Geelong annihilating Port Adelaide by 119 points. I believe it’s the largest winning margin in the history of the AFL/VFL.

It was probably the best game I have ever seen these boys play. Let’s make it back-to-back next season.

GO CATS!

24 Sep, 2007

Blue and White fever

Posted by: Andy Botting In: Personal

After a close (too close..) win over Collingwood, Geelong have advanced into the Grand Final. As you can see, I managed to score some tickets from the random ballot for Geelong members.

I took a trip down to the Cattery (Geelong) and it’s really exciting to see the all the blue and white everywhere. Plenty of people wearing their guernseys, scarves and jackets around town. I’m glad to see now that the ‘lid’ is off, and everyone is getting into the spirit of things.

Through the Chinese whispers, I managed to hear that Kingy’s got a place in the AFL side, after his good performance in Geelong’s VFL premiership yesterday. I think he’s really put in hard after his injury, and although Blake has been very good, I think it’s Kingy’s time.

Go the Catters!