A small Python script to connect to the internet over Bluetooth DUN (dialup networking) using my Nokia Symbian phone and my Linux laptop.
This was written on Arch Linux but should work elsewhere too. It uses bluez5 to enable bluetooth, rfcomm to create the serial port and wvdial to create the PPP connection and manage routes/DNS. Many newer phones use Bluetooth PAN instead of DUN so this method won’t be applicable.
Once upon a time this all worked automagically with NetworkManager. Since bluez5 it fails with this error:
Method "Connect" with signature "s" on interface "org.bluez.Serial" doesn't exist
Apparently we’re supposed to use the new Serial.ConnectFD DBUS API instead.
My latest project was to have wireless audio streaming from my Symbian mobile phone over Bluetooth to a a new set of speakers. I used PulseAudio, Bluez5 and Arch Linux running on a Raspberry Pi. It all works really well. I can connect/disconnect from the phone and everything is automatically started on boot. I’m enjoying it now as I type this.
Update 2017-03-05: hciconfig is deprecated
After upgrading my file server from Ubuntu 10.04 Lucid to Ubuntu 12.04 Precise I had a few problems with Samba. Mac OS X 10.6 clients were very very slow. A 1MB file would take several minutes to transfer completely, making browsing photos and general use impractical. Windows (Vista and 7) clients could not connect at all, the file server did not appear in the browse list and typing the name manually did not work either. Unsurprisingly, Linux Samba clients worked perfectly.
I use rdiff-backup to keep a copy of the latest version of all my files and compressed differential backups going a year in the past. This works great except when I have a GNOME login and a ~/.gvfs directory. These are special FUSE directories that root user cannot even enter or even lstat(), which causes an annoying error to be emailed to me every night.
I finally got sick of this and have hacked a solution, I’m not proud of it, but it’ll make the emails stop!
$ curl -L --silent https://delx.net.au/code/rdiff-shutup.patch | sudo patch --backup -p0
I recently retired an old server of mine, cerberus. It was hosted in a remote data centre to which I have no physical access. My goal was to zero the drives before powering it off for the last time.
I wanted to play some audiobooks from Audible.com on various devices as mp3s. These books are distributed in an encrypted .aa format. You can play these in iTunes or Audible Manager. You can also burn them to audio CDs, which is a pain as they can be 20-40 hours long, that’s a lot of CDs!
In my house I have Debian Linux running on an old laptop acting as my router with a Netgear WNDR3700 acting as an access point (WAN port on this is unused). The AP is configured with WPA2 security, but recently I wanted to connect my Nintendo DS to the wifi network. Now the Netgear has guest networks, which is pretty much what I wanted, but it only allows the guest wifi access to the WAN port, which was useless to me. I also wanted to be able to conveniently enable and disable the insecure network with a button on the access point. Knowing that the hardware supported what I wanted to do, and having had good experiences with OpenWRT on another router in the past, I set out to see if I could make it work.
Recently I set up an encrypted file system so I could do rsync backups to a secured location. What you end up with is a mountable file system that you can use to securely store data. Debian offers an easy way to set up encrypted file systems using the LUKS standard with the cryptsetup package. You’ll need to enter a decryption passphrase to mount the volume whenever the system boots.
The Apple aluminium keyboards are very nice. I recently bought one for an Ubuntu Linux machine, and it requires some special configuration to work as expected.
This post describes how to fix the function keys and swap command (windows or ‘super’) keys with the alt (or option) keys.
I recently started using VoIP, using NodePhone with Internode. This post describes how I implemented QoS on my router to make VoIP work well. It also allows me to prioritise some traffic on my network, such as SSH, while deprioritising others, such as BitTorrent and SFTP.