2010 SpamAssassin bug

If you run SpamAssassin, you may be pleased to encounter this bug about now – https://issues.apache.org/SpamAssassin/show_bug.cgi?id=6269

Because nobody ever thought the year 2010 would happen :-/

There’s some more details on the rule, and more importantly how to disable it, over here http://wiki.apache.org/spamassassin/Rules/FH_DATE_PAST_20XX

AC Fuel Flow Summary

As has been noted earlier, the AC has had its fair share of fuel flow problems. Ranging from the large (a rotten fuel tank) to the tiny (a flake of corrosion in the accelerator pump). Here’s a few things that were done to try and cure it.

Firstly, replace the filters that sit on top of the fuel tank drain plugs. They may not seem like much, but internally the fuel intakes come down inside the tank, and slip inside the filters that are on top of the plugs. This fine mesh is the first line of defence against rubbish in the fuel tank. We thought we could get away with old ones that had a slight tear in them. After a few weekends of running, further inspection showed a pile of gunk sitting inside the filter! This would lead directly to the fuel pump…

The second thing to do was to insert an inline filter between the fuel solenoid (since the AC has two fuel intakes), and the fuel pump. This is just a bog standard plastic inline fuel filter after the solenoid, and is there to save the pump from any rubbish that somehow gets past the gauze filters on the drain plugs. We also took the chance to replace all the fuel hoses between the solenoid and the carburettor. The existing hoses were coming up on 30 years old, so we though it wise to avoid any rubber degradation issues and replace the whole lot in one go.

Roughly at the mid-point now, we opted to change the fuel pump. It had been noted that the fuel was flowing back down the line after the car had been left to sit for a day or two. This made starting it particularly difficult, and was probably the precursor to a failed pump. Add to that all the rubbish that had been coming through the fuel system in those weeks of diagnosis, the pump filter had been cleaned out more often then we had had hot meals. A new pump was fitted, and the fuel draining problem immediately vanished.

Annoyingly though, we were still experiencing problems with fuel flow. Between Gordon and I, we must have stripped the about 20 times. Every time it would work great for 20, maybe 50, miles before reverting to its normal way of not letting any fuel flow when under load.

Convinced it was a problem of more rubbish in the fuel system, we decided to fit another filter after the pump and before the carburettor. Initially we went for the cheap plastic inline filters that are readily available, but we didn’t leave it in that configuration for very long for another reason – we fitted a Filter King instead.

The Filter King not only acts as a filter, but it also has a sedimentation bowl which doubles as a small fuel reserve. Any rubbish floating in the fuel can fall to the bottom of the bowl whilst the fuel in the bowl can continue to be drawn upon by the carburettor. We initially tried the Filter King before the fuel pump, but it’s clearly designed to have fuel pushed through it. The pump couldn’t draw air hard enough to draw fuel into the Filter King, and nothing worked. Now, the AC 3000ME range historically has a problem of fuel starvation during a long corner. This is most likely due to the shape of the fuel tank, but appears to be mostly mitigated by the Filter King now.

Sadly, after all this work, the fuel was still not flowing as planned. At higher revs after 30 minutes of running it would start to cut out. Something was clearly wrong, and all things started to point to the carburettor… no matter how many times we stripped it down and rebuilt it!

When you blip the throttle on the AC, it activates the accelerator pump. This pumps a higher than normal amount of fuel into the carburettor in order to rapidly increase the revs of the engine. It also ensures the engine stays running and doesn’t cough and splutter to a halt. Sound familiar? After much poking and prodding, I discovered that the one of the two accelerator pump outlets was partially blocked! These outlets start at about 4mm across, and narrow to about 0.5mm. That’s why it had passed our cursory blowing through the thing to see if it was clear. Using a small length of wire from the fuel hosing braiding, the passageway was cleared, and tiny flake of white aluminium corrosion fell out…

So that was it, all those problems were caused by a tiny bit of corrosion that had worked itself up to the narrowest gap it could wedge itself into. Although it seems like we were on a wild goose chase for a lot of it, I believe that a lot of worthwhile work was still completed. Replacing the drain plug filters was definitely required, the pump was on the way out, and the Filter King cures some edge case starvation problems, as well as providing a handy visual indicator for the state of fuel flow in the system.

USB Problems

Micro-USB plugI have a minor issue that I’d like to get resolved. I have a cheap but very good USB GPS receiver. However, it uses a weird USB connector and the cable for said connector has developed a fault (at the strain relief point, amusingly). Can anyone advise on the type of connector it uses?

In the two lower photos the cable at the top left is the one I need a replacement of. The device at the bottom is the GPS receiver, and the cable at the top right is a normal mini-USB plug. The photo on the far right is a micro-USB connector, and it isn’t that either :-)

The USB Cable problem The USB Cable problem

Sure/Smartie LCDProc

Recently I’ve been looking at getting a computing device into the Land Rover. Short of buying a full sized 7″ touch screen, I opted to go for a slightly cheaper £20 4×20 LCD display. This was more to be proof of concept, and give me a starter to work on, before I decide whether or not to put a full sized screen in.

Ultimately, I purchased a SmartieLCD module from Ebay. It arrived, I plugged it into my laptop running Windows at work, and it worked first time. Now it was time to get it working with LCDProc!

Earlier on I had spotted that SmartieLCD in Windows used the Matrix Orbital DLL file. Sadly, when using LCDProc in Linux, Matrix didn’t work at all. It was time to go looking

Enthused by http://lists.omnipotent.net/pipermail/lcdproc/2009-July/013021.html, and manufacturers documentation, I decided to check out the CVS copy of LCDProc. The last ‘release’ was back in 2007, so if I was to get anything recent it would have to be from CVS

cvs -d:pserver:anonymous@lcdproc.cvs.sourceforge.net:/cvsroot/lcdproc login
cvs -z3 -d:pserver:anonymous@lcdproc.cvs.sourceforge.net:/cvsroot/lcdproc co -P lcdproc

Having a look around the source files indicate that Sure Electronics displays were supported, but not enabled by default. A simple ./configure flag would enable them, so it was time to get compiling. Firstly some support files have to be installed first.

sudo apt-get install libusb-dev autogen automake

After that, kick off the build process, and enable Sure Electronics support at configure time.

sh ./autogen.sh
./configure –enable-drivers=SureElec
make
sudo make install

Now that the software is installed, LCDd needs configured in order to send data to the LCD display.

sudo vim /usr/local/etc/LCDd.conf

In here, a few parts need changed -

driver=SureElec
DriverPath=/usr/local/lib/lcdproc/
Edition=3
Contrast=200
Brightness=480

And that’s it! Execute /usr/local/sbin/LCDd, and you should get a Clients: 0 and Screens: 0 on the LCD display.

All is good!

Touchatag and RFIDIOt

A while back, Alcatel Lucent were flogging off cheap Tikitag readers and tags due to a naming error. They subsequently became Touchatag, and I picked up a cheap RFID reader and 100 tags for about 10 quid. Bonus. Now to get it working on Linux.

Adam Laurie helpfully wrote the RFIDIOt toolset, and a quick download and tar -zxvf had it on the system.

Install various support files…
apt-get install python-pyscard pcscd pcsc-tools python-pycryptopp python-serial

You may see pcscd starting up. If you don’t, check with ps to see if pcscd is running as a background process. If it is, you can fire up pcsc_scan, and then plug in your reader. All being well, something similar to the following will be printed out.

Waiting for the first reader…

found one
Scanning present readers…
0: ACS ACR 38U-CCID 00 00

… followed by a load of data.

The 0: indicates the reader number, so ctrl+c out of pcsc_scan, and open up RFIDIOtconfig.py in your favourite text editor. Jump down to the readernum= directive, and change that from 1 to 0 (or whatever number was indicated in pcsc_scan).

You’re now good to go. In the case of the Touchatag device, just fire up ./multiselect.py, and slide one of the Touchatag tags across the face of it. All being well, something similar to the output below will be displayed.

bagpuss@x300:~/src/RFIDIOt-1.0a$ ./multiselect.py
multiselect v0.1m (using RFIDIOt v1.0a)
Reader: PCSC ACS ACR 38U-CCID 00 00
(Firmware: ACR122U102, SAM Serial: 065441005C162256, SAM ID: 004033)

Tag ID: 04AF1AB9232580
No card present

It always displays “No card present” when nothing is there. That can easily be changed in multiselect.py, and you can edit it to do anything you want now.

Personally, I’ll be using my reader to log when I arrive at work and leave for home, due my inability to get timesheets handed in more than twice a year :-) My boss rocks!

4500G Clustering

Recently we’ve obtained a bunch of 3Com 4500G 48 port switches, and we’d like to be able to manage them slightly more effectively instead of leaving them as dumb switches. However, rather than giving each switch an IP address, 3Com allows you to use HGMPv2 to cluster them all under one IP address.

Now, this may seem fairly trivial to those with separate management networks, but sadly we’re not in that position (yet) to have a separate management network. Even if we were to set up a new VLAN for management purposes, it wouldn’t be accessible to the rest of the network staff external to our office. So, as it stands, the cluster management switch still has to use VLAN 1 for the admin and management stuff. It can still use (and has to use) a different RFC1918 address for the internal clustering network, but that’s all transparent to us.

Below is a short detail of what needs done in order to build a cluster of 4500G switches…

Enabling the electrical (Cat5) Dual combo port

As the dual combo SFP port is shared with ports 23, 24, 47 and 48 (49, 50, 51, and 52 respectively), the relevant port must be brought up (or ‘undo shutdown’ on its counterpart), in order to enable it.

[WMSWC1_0.WMSW001]system-view
System View: return to User View with Ctrl+Z.
[WMSWC1_0.WMSW001]interface GigabitEthernet 1/0/51
[WMSWC1_0.WMSW001-GigabitEthernet1/0/51]undo shutdown
[WMSWC1_0.WMSW001-GigabitEthernet1/0/51]interface GigabitEthernet 1/0/52
[WMSWC1_0.WMSW001-GigabitEthernet1/0/52]undo shutdown
[WMSWC1_0.WMSW001-GigabitEthernet1/0/52]quit
[WMSWC1_0.WMSW001]

This will enable combo ports 51 and 52, and leave 47 and 48 shut down.

Initial setup

This is done on the switch that you want to be the management switch.

Globally enable Neighbour Discovery Protocol. This allows the switches to discover information about connected neighbours, such as firmware versions, mac addresses, link states, etc.
ndp enable
Globall enable Neighbour Topology Discovery Protocol. This allows the switches to collect information regarding the topology of the network, connected devices, etc
ntdp enable
All NDP packets have a holdtime variable set. This is how long the recieving device will store the information for. The next setting defines how long that should be.
ndp timer aging 200
Next, set how often the ndp packets should be transmitted.
ndp timer hello 70
The number of hops in which to collect topology information. I’ve set this to 10, as we had 9 switches that were daisy chained for a while. Far from optimal, and now in a more star like topology anyway.
ntdp hop 10
Set the delays for each device, and port, respectively
ntdp timer hop-delay 150
ntdp timer port-delay 15

Define the period, in minutes, between topology information collections.
ntdp timer 3
Enable cluster mode.
cluster enable
…and switch into cluster view
cluster
The cluster requires an independant RFC1918 address range to work with. This is for internal management purposes and never seen by the outside world. Apparently.
ip-pool 172.16.0.1 255.255.255.0
Tell the system to build the cluster
build WMSWC1
Configure the length of time to hold member information for, before deciding that the member is gone, and define how long between handshake packets
holdtime 100
timer 10

Adding a cluster member

Just enable the following options on member devices

ndp enable
ntdp enable
cluster enable

On management device
Switch into cluster view again, and add the remote device.
cluster
add-member 3 mac-address 0022-5726-d080

Repeat the above add-member command for each member number (the first parameter) with the MAC address of each switch. After you’re done, all the switches except for the cluster commander should display ‘S’ for ‘Slave’ on their LCD display. The Cluster Commander displays a ‘C’ instead.

Once everything is up and running, you can then use topology accept all and topology save-to local-flash to accept and save the current topology layout.

It should also be noted that there is a cluster autobuild feature, but it’s always best to at least have a rough idea of how it works :-)

More Land Rover Stuff

Work continues on the Land Rover, and it’s mostly road legal now. More than it’s ever been in the past 3 years :-)

Things now fitted include… Windscreen seal
Front lighting grills
Radiator grill
Reversing switch and lamp
New floor
New seats
Replaced foglight wiring and switching
New dashboard switches
Extra windscreen to roof seal
27A Rear accessories electrical supply
Repaired offside rear hub
New hub bolts and gaskets
Battery clamps
Forward fuse box and circuit
New gearbox frame and lever
Fuel cap

It’s pretty much good to go for an MOT. It just needs grease and oil in the right places. I don’t know if I’ll manage to get it ready before I go on holiday, but it would be nice. On the other hand, it would be preferable to get things like the door trims, lighting, radio gear and computer installed before an MOT. Just get it all done before the big day really.>

OpenStreetMap Glasgow

Get your calendars out. OpenStreetMap is having a social meetup in Glasgow – Tuesday 17th November 2009 at 7:30pm

Every three months on the third Tuesday of each month OSM is planning to have regular social meetings at 7:30pm at the Drum and Monkey

As this is the first meeting we hope to be discussing the suitability of the venue, future dates, and having a few drinks. Bring along GPS units and any other kit that may be interesting to other mappers

Central America will be there wearing a orange openstreetmap survey jacket so you can find the group

Lost your APC UPS?

I was in a sticky situation this weekend. I had casually set up one of our APC UPS RT 5000 units to use DHCP to get a statically assigned address. However, I hadn’t implemented Option 43 on the DHCP server and the APC management card had fallen off the network.

Unable to find a serial cable of the right type, and unable to get the card onto the subnet, I was faced with resetting the firmware. That was until I read the manual!

With the APC9619 card, at least, if you know the MAC address (I did, it was in our DHCP server config), you can prod the card with an ICMP packet to assign the desired address.

Simply do this…

Assign an IP address to the MAC address in your local ARP table
sudo arp -s 10.240.64.32 00:C0:B7:CA:D8:9B

Ping the address with a 113 byte ICMP packet.
ping 10.240.64.32 -s 113

This causes the management card to accept the address as its own, and at that point you can now telnet to the card and enter the administration console (unless you like clicky pointy things, in which case you can use your web browser)

It seems to time out rather quickly, so don’t mess about in the admin console. Jump in, remove the DHCP Vendor cookie requirement (2, 1, 1, 1, 2, 8, 1, 9) and reboot the management card.

All done! No cables, no firmware, no massive reconfiguration.

Land Rover Stage n

I’ve not been updating this site cos I’ve been working on the Land Rover so much! I’ve lost count of all the stages that it’s gone through, but I’m hoping this is the last one.

All being well, I could get the work done before the end of November and in time for a tax disc in December. However, a 2 week holiday in December makes that a little uneconomical. We’ll see… economics vs eagerness.

Things that have been done so far…
Refurbished and refitted dashboard
Custom chassis wiring management system (ie waterproof tubes)
New wiring loom front, middle and back.
New light, front and back.
New instrument panel
Refurbished front wing mounting points.
Scratch fabricated aluminium reinforcement behind front lights
Scratch fabricated aluminium reinforcement at wing mounting points
New mud shields, and snazzy drainage system between shields and footwell devised by Bill
New windscreen seals
New bulkhead
Renovated heater and blower system
Refurbished handbrake drum, brakes and mechanism
New front doors, top and bottom.
Painted front and rear doors
New and sealed fuel tank
Removal of old rear seats, refurbishment of mounting points
Fitment of rear storage compartment and gas struts on lid
Drain and replace all oils and fluids
Regrease all grease points
Removal of redundant and broken choke cable, modification of ignition barrel to accept modern choke cable.
Design and fitting of interior rear shelf.
A thorough wash and polish

Things that remain to be done for an MOT.

Fitting of new seats
Replace N/S rear axle stub
Replace all drive flange bolts and gaskets

Things that I’d like to get done very soon
Fitment of LaSalle door interiors
Fitment of radio gear
Fitment of rear floodlight, reversing lights, and fog lights