I've always opted to login to my server and use the good old fashioned textarea entry; however, with the stability of TextPattern's XML-RPC library, I figured I'd give BloGTK a try.

It's fairly basic, but it works rather well, despite my personal belief that UI interfaces and scripting languages are best left as seperate entities.

So, now I can join the myraid of others who use the internet as their mental grocery list.. This is progress, I suppose.

Ok, it died twice again, worked 3 times back at home, and died 4 more when out and about. I give up on this mess.. If I need wireless, elsewhere, I’ll make another config file. NetworkManager is too flaky; the system constantly reloads the ipw3945 driver before wpa_supplicant has had a chance to associate… and the prior version of ipw3945 is unloaded (due in part to the user-level daemon which is required.. thank you Intel..)

So, here’s my (hopefully final) workaround:

/etc/network/interfaces:

auto eth1
iface eth1 inet dhcp
pre-up          /etc/init.d/wifi_wpa.sh start
pre-down      /etc/init.d/wifi_wpa.sh stop

/etc/init.d/wifi_wpa.sh:

#!/bin/sh
PATH=/bin:/usr/bin:/sbin:/usr/sbin
BIN=/sbin/wpa_supplicant
PIDFILE=/var/run/wpa_supplicant.pid

. /lib/lsb/init-functions

case “$1” in start)
if [ -x /sbin/wpa_supplicant ]; then $BIN -ieth1 -c /etc/wpa_supplicant.conf -Dwext -w -P $PIDFILE 2>&1 &
fi ;; stop) killall wpa_supplicant ;; *) ;;
esac
exit 0

/etc/wpa_supplicant.conf:

network={
  ssid="MYSSID"
  scan_ssid=1
  psk="MYPSK"
}

/etc/acpi/suspend.d/95-iface-down.sh:

#!/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin
/sbin/ifdown eth1

/etc/acpi/resume.d/95-iface-up.sh:

#!/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin
#Just to be sure
/sbin/ifdown eth1
sleep 2
/sbin/ifup eth1

Yes, it takes an extra 4 seconds to startup, but damn it, it works without fail. Anyone who’s been dealing with this mess at all, I strongly suggest ‘apt-get —purge remove network-manager’ ;)

I’ve heard many things over the years about Ubuntu.. heck, I even passed out a few of their ‘free’ CDs in ’05 (Hoary, 5.04). It worked great.

However, I’ve recently attempted to adopt it on a fledgling Laptop which was just becoming more of a nuisance to try to keep running than was worth the time invested.

When reading through documents for others who attempting to do the same, it shocked me at how lacking support was in Linux for nearly three year old commodity parts. Ubuntu, the first Linux distribution I actually had a specific reason to distrust (They imported alpha grade drivers, which were at version 0.1 and known to cause crashes into the mainstream), was now not enabling proprietary drivers in their default install.

This, of course, meant that their pretty little installer crashed. Hard.

I ended up installing Ubuntu via apt and wired ethernet. It was more of a pain than getting Debian running.. and Debian tends to scare people away.

The one thing I did like is that Ubuntu’s Gnome ‘Network Manager’ applet actually worked with my ipw3945, and the fglrx driver could be tweaked so I could shut my machine down.

However, upon waking, it still broke the ipw3945. That worked fine for everything else. Oh well.

Here’s my ugly little script I used to reload/reinit the ipw3945 if it crashed, restarting the userspace daemon, and firing off wpa_supplicant, since it never seems to return after sleeping, even if I let it keep the network module loaded:

/etc/acpi/resume.d/70-fixwifi.sh:

#!/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin
# This script is naaasty...
/etc/init.d/networking stop
REVISION=/sbin/ipw3945d-`uname -r`
ISRUNNING=`pidof $REVISION`
rmmod ipw3945 > /dev/null 2&>1
if [ $? -eq 0 ]; then
  modprobe -r -f ipw3945
  modprobe ipw3945
fi
if [ x$ISRUNNING -eq x ] && [ -x $REVISION ]; then
  $REVISION --quiet
  sleep 2s
fi
WPA=`wpa_cli status | awk -F= ' /wpa_state/ { print $2 }'`
#start everything back up
if [ x$WPA -ne xCOMPLETED ]; then
  # I really hate this, but it's not worth beautifying right now
  killall wpa_supplicant
  /etc/init.d/wpa_start.sh &
  # wait for it
  sleep 5s
fi
/etc/init.d/networking start
/sbin/ifup eth1

/etc/init.d/wpa_start.sh:

#!/bin/sh
ISRUNNING=`pidof wpa_supplicant`
if [ x$ISRUNNING -eq x ]; then
  wpa_supplicant -i eth1 -c \
  /etc/wpa_supplicant.conf -Dwext -w
fi

/etc/wpa_supplicant.conf:

network={
  ssid="MY SSID"
  scan_ssid=1
  psk="MY_WPA_KEY"
}

What it does is test to see if the wireless is loaded, and if so, attempt to remove it. If it is successful (not in use), force unload (why not?) then reload the module. If the userspace daemon isn’t running, fire it off. Finally, take a little nap while wpa_supplicant inserts itself, then fire off networking.

It’s obnoxious, and annoying (note that I hardcoded the interface of eth1), but there seems to be no way of getting nm-applet to properly reinit the interface, itself.

Although when connected, it does still measure the signal and allow me to switch, so that’s good enough for me.

I’ve found yet another oddity. Rather, gcc pointed it out to me, because I wasn’t paying too much attention.

this current patch which should fix RAM resume and suspend problems in 2.6.21.

It modifies the subroutine as follows:

static void tick_resume(int broadcast)
{
        struct tick_device *td = &__get_cpu_var(tick_cpu_device);
        unsigned long flags;
        int broadcast = tick_resume_broadcast();

If you don’t read nerd (or C), this is saying “Ok, so, you told me
what ‘broadcast’ is, but I’m going to ignore that and figure it out, myself.” A bit strange logic, that.

However, there is a proposed update which clears up some of this mess.

Ugh. I miss FreeBSD at times.

Linux has been going through many, many changes recently. One of the most impressive has been with the release of 2.6.21. With this release, there has been offered a ‘no tick’ for normal (32 bit) PCs.

What this means is that Linux can now understand: ‘If there’s nothing to do, don’t worry about it.’ It will take a siesta. Most people won’t really notice this, or care.. however, it means a lot to people like myself who are currently stuck with it as an operating system on our Laptops. It means that Linux won’t chew up our batteries as harshly as it did priorly.

I’ve been fighting the most recent stable release (2.6.21.3) for most of the week that it’s been out. The CPQ scheduler was broken, ALSA (sound) drivers are too old, and don’t work very well with my hardware, there is a problem with it’s clock system (if you put your laptop to sleep, if it wakes up, it will have a fit, not knowing that it was asleep, but rather, thinking that it just mysteriously lost time), the new headers break support for VMWare’s drivers, and also destroy any binary-only drivers available by removing system calls.

But, hey, all in the name of progress, right?

Anyhow, I’ve opted to backtrack to 2.6.21, the latest-not-a-sub-release-release, and base my code on Debian’s own 2.6.21 unstable sources.

I’ve updated ALSA, cleaned up some of the SCSI defines, fixed the clock, added a few suggestions by Intel for the 2.6.21 kernel, as well as many, many, many other changes, mostly laptop centric (support for Core Duo 2, a few driver updates, and even a forward-patch of BootSplash), however, these patches do increase the stability of 2.6.21, as well as add stable features (with the exception of BootSplash, which is just eyecandy).

If you are a laptop user who’s having difficulties with the broken/strange ACPI support, or, forbid, just want your old tools to work again, here’s a link to a diff from the STOCK 2.6.21 kernel, with Debian’s patches, my updates, a few Gentoo bugfixes, and even more.

My patches will also enable you to build flgrx, ipw3945, and many other things which you might find you have lost with 2.6.21.