August 2014

Okay, enough of that, Atomic

Well, it has been a long time since I last logged in on the Atomic MPC forums.  Years in fact.  I was at one time, quite active, particularly in what was the “Unix, Linux and Open Source” forum, back in the days when their forum software was an entirely in-house production.

Lately, my work has been very IT intensive, and while some days things go great, other days it’s a struggle.  And when it’s a struggle, the last thing one wants to look at is a computer.

Now when I was active on the Atomic forums, the threads used to move rather fast.  In their move to VBulletin we gained the ability to subscribe to threads and get notified of replies.  A feature I made quite extensive use of.  It was a useful way to keep track of what was happening.

One day I decided I had enough, rather than draw attention to myself with a leaving thread, I just quietly left.  I continued to watch the threads from a distance, and over time, the replies got less and less frequent as the threads slipped off the front page.  I hadn’t seen an email from Atomic for well over two years, until the other day.  Bam!  I had over 200 emails in one hit!

I thought this was just a one-off glitch, so I ignored it.  Then Bam!  A few days later it happened again.

I suppose it’s happened 4 or 5 times now.  What does it look like?

Atomic MPC spam

Atomic MPC spam

Yes indeedy, that’s my email inbox, and there is more crap from old threads that are old enough to be stored on wooden platter hard drives than legitimate email in my Inbox.

I’ve just recovered my account and hopefully unsubscribed myself from these notifications.  However, to the Atomic MPC mods, be warned, if this continues I will be taking this up with the ACMA as the constant barrage my server is copping is getting beyond a joke.

Experimentation with cycle clothing — Part 2

Well, after my initial post about my experiment, I’ve collected a bit more information and I think I’ve settled on a solution and come up with a hypothesis of what’s going on.

Disposable coveralls

As I suspected, the disposible overalls did have a problem in the longevity department. Not a big one mind you. One pair got ripped when the leg brushed up against the corner of a drawer. Fixable with some tape. A few weekends back I wore them cycling from The Gap to Logan Central and back. This is a ~82km round trip (81.56 to be exact), and represents a fairly rigorous test. They got home intact, but the tape on the seams was starting to come adrift.

I also performed a shower-test on both these and the SMS fabric ones. The MP4 ones passed with flying colours. No seepage other than where I had made ventilation holes: and that could be fixed with a storm flap. My “poor-man’s bikesuit” idea could still work.

So the MP4 ones I have, good for emergencies, I’ll continue to carry a pair just in case.  They roll up to something the size of a drink bottle, and contribute bugger all weight, so for those times I am wearing normal clothes, they’ll be great to toss over when the weather turns foul.

SMS fabric? Good in very light and brief showers only. If it’s prolonged heavy showers for anything more than about 30 seconds you’ll get drenched.

It’d be interesting to have a closer look at the Tyvek ones originally recommended.  I might investigate at some point.

Breathalon Spray Suit

So I went back to the Breathalon spray suit, which, having bought it in 2008, is now starting to look a bit frayed, particularly around the hood.  That, and there’s my attempt at adding pocket access.  I do raise a sweat, but it’s minor, and soon evaporates when I stop. I find I’m a lot more comfortable.

How is this so though? Common sense would suggest I’d sweat like a pig! The material is breathable, and so the vapour can escape. If they’re loose enough, there is also a small wind current to draw vapour out. Crucially though, being non-porous, they do not absorb my sweat, and so I don’t have the wind-chill effect of sweaty clothing.  The key here is to have minimal clothing underneath that might absorb the sweat, as this then relies on your body heat to dry it out, and will take longer.

My nits with these?

  • The zip is one-way.  However you can ignore the zip and just use the velcro storm flap as a fly.
  • No pockets at all.
  • The hood isn’t well shaped, doesn’t track one’s head movement very well, and I found the elastic caused it to obstruct my field of view
  • The yellow colour is great for daytime high visibility, but there are no reflective bands for night use.  (I tried using self-adhesive ones, they didn’t stick very well.)

Otherwise, they’re durable and lightweight.

Castle Clothing Coveralls

I mentioned these in my last post.  Well, I bit the bullet, I bought a pair, something which also necessitated me getting a Visa card for the first time in my life (I can highly recommend these as a payment method).  I tossed up between this and buying another Breathalon spray suit, Mammoth Work Wear had these for £40 plus about £30 shipping, this worked out to be under AU$140.  The Breathalon suits are $150+ without shipping.

A heads up with the Mammoth Work Wear site: ignore the sizing advice they give in the drop-down box, you want to pay attention to the sizing chart table below.  The drop-down box suggested I’d be a size L, whereas the table suggested XL.  I went XL and they’re a perfect fit.

Fedex had estimated they’d arrive on Monday, they actually arrived this afternoon.  So I tried them out on the ride home tonight.

I sweat a little more, but not significantly so.  If anything, the lining means I don’t notice them sticking so much, so in that regard they’re more comfortable.  When I got home, yes there was moisture, but I wasn’t dripping, nor did I suddenly feel cold.

They feature a two-way zip (good), with press-studs on the storm flap (not so good, velcro worked better).  The hood (not a concealed hood, which IMO is a plus) is excellent, tracking my head movement very well, sits forward far enough to keep rain off one’s face, and doesn’t block my vision.  It didn’t pose a problem with the helmet either, keeping out of the way and didn’t impede movement or significantly muffle sound.

There is one pocket on the left at the front.  Too low to be considered a “breast” pocket, but well above the waistline.  They could use an identical one on the other side, and perhaps some side pockets, as I find I’ve got nowhere to put my hands.  That said, it’s a generously sized one.  You could fit a 7″ tablet in there no problems, so can easily fit a wallet, phone and keys.

The test will be longevity, and the summer humidity.  They look well-made so we’ll see.

Shunting reminders and files with UUCP

Unix-to-Unix Copy is a rather old way of sending files between Unix systems.  Before SMTP was invented, it was the de-facto way to shunt email around, and prior to NNTP, was also the backbone of Usenet.

Fast forward to today, we’ve got a lot of options open to us.  So why would I use a crusty old one like UUCP?

UUCP has one big advantage, it doesn’t assume your system is always online.

  • It might be a workstation at your workplace which is behind a corporate firewall.
  • It might be a more powerful desktop computer at home that’s usually in “sleep” mode to save power.

Because the initial connection can be established in either direction, it is ideal for a system that may not be directly reachable, but is able to poll on a regular schedule for instructions.  It’s also useful, since UUCP assumes some steps need to be taken to bring a link up, to perform tasks such as powering on a system using IPMI or Wake-on-LAN, wait for it to come up, perform a task, then have the machine power back down when finished.

UUCP over the Internet

Now, UUCP can and does work directly over the Internet.  in.uucpd runs from inetd, and basically fires up uucico each time someone connects to it. But: it is unencrypted and insecure. It’s not what you want exposed on today’s public Internet.

UUCP does support SSL, and there are ways to make stunnel work with packages like Taylor UUCP. This still requires some significant setup and an additional open port.

There’s another way. Thanks to the OpenBSD community, we have OpenSSH, and it is very trivial to set up a secure UUCP link using public key authentication, to lock down the public key to only be used with uucico, and to effectively secure communications between your hosts.

Generating the SSH key

Since this is going to be used with an automated service, one needs to make it a passwordless key. Go for something secure in terms of the key length and algorithm: I used 4096-bit RSA. To do this, log in as root then:

# su uucp -
$ ssh-keygen -t rsa -b 4096 -N '' -C 'UUCP key'
Generating public/private rsa key pair.
Enter file in which to save the key (/var/spool/uucp/.ssh/id_rsa): 
Your identification has been saved in /var/spool/uucp/.ssh/id_rsa.
Your public key has been saved in /var/spool/uucp/.ssh/id_rsa.
The key fingerprint is:
c3:42:5d:77:a9:c2:3a:da:bd:98:6a:5d:03:62:79:19 UUCP key
The key's randomart image is:
+--[ RSA 4096]----+
|          . . .. |
|       .E. . ..  |
|      ...+   .   |
|     .+.+ o .    |
|     ..oSo .     |
|       .o.o      |
|       + + .     |
|      o oo.      |
|     ...o ..     |
+-----------------+
$

You have a choice. You can either: make a keypair for each host, and set up authorized_keys so the hosts can log into eachother, or you can use the same keypair for all hosts. I went the latter route, as I’m not that paranoid. Whilst still logged in as the UUCP user:

$ echo 'command="/usr/sbin/uucico -l" '$(< .ssh/id_rsa.pub ) > .ssh/authorized_keys

Now, securely transfer the UUCP user’s .ssh directory between your hosts. This will allow uucp to log in.

Populating known_hosts

The easiest way to do this, is to log into each host as the UUCP user, then run a script like this:

$ for h in host1 host2 host3 ; do ssh $host true; done

Check each key carefully, answer yes if you’re satisfied.

UUCP Log-in script

Taylor UUCP, has the ability to define a “port” that runs an arbitrary application. You could put a call to SSH here, but there’s another trick I use. As root:

# cat < /usr/local/bin/uussh
#!/bin/sh
echo -n 'Address: '
read user host wake

if [ -n "${wake}" ]; then
        timeout=60
        until ping6 -c 1 -w 1 -n "${host}" 2>&1 >/dev/null \
                        || ping -c 1 -w 1 -n "${host}" 2>&1 >/dev/null \
                        || [ $timeout -le 0 ]; do
                timeout=$(( ${timeout} - 1 ))
                /usr/bin/wol ${wake} 2>&1 > /dev/null
        done
fi

exec /usr/bin/ssh -x -o StrictHostKeyChecking=no -o batchmode=yes ${user}@${host}
EOF
# chmod 755 /usr/local/bin/uussh

Now we can define one “SSH” port, that will automatically wake a computer if needed, wait for it to become alive, then initiate the SSH link. The chat script will specify the host name.

Taylor UUCP configuration

Now we come to UUCP itself. First, let’s create this special port. Edit /etc/uucp/port and add the following:

port ssh
type pipe
command /usr/local/bin/uussh

Now, we’ll set up login usernames and passwords for each host. The easiest way is to do this from a local shell, then distribute the generated passwords.

$ for src in host1 host2 host3 host4; do
   [ -d $src ] || mkdir $src
   for dest in host1 host2 host3 host4; do
      [ -d $dest ] || mkdir $dest
      if [ $src != $dest ]; then
         passwd=$( dd if=/dev/urandom bs=12 count=1 2>/dev/null | base64 )
         echo "$dest $src $passwd" >> $src/call
         echo "$src $passwd" >> $dest/passwd
      fi
   done
done
$ for h in host1 host2 host3 host4; do scp $h/* root@$h:/etc/uucp/; done

Now we have separate usernames and passwords on each host. We can finish up with the /etc/uucp/sys file:

commands rmail rnews gruntreceive-uucp
chat-timeout 120

These are some initial instructions that apply to all hosts. Here, I give permission to run rnews, rmail and gruntreceive-uucp, and I tell it to wait 2 minutes before giving up.

The following is an example of a host that sleeps and needs to be woken first:

system host1
chat Address: uucp\shost1.local\saa:bb:cc:dd:ee:ff\n\c login: \L Password: \P
port ssh
time any
call-login *
call-password *
protocol t
forward-from ANY
forward-to ANY

The following, is an always-on host.

system host2
chat Address: uucp\shost2.some.domain\n\c login: \L Password: \P
port ssh
time any
call-login *
call-password *
protocol t
forward-from ANY
forward-to ANY

Phoning home and scheduling retries

In the case of satellite systems behind some resticted network, assuming you have a way of tunnelling out of the network, you can “phone home” on a regular basis. You also want to periodically call uucico on all hosts to check if there’s any scheduled work on. This is done via /etc/crontab:

* * * * * uucp /usr/sbin/uucico -r1 -q
0 * * * * uucp /usr/sbin/uucico -r1 -s main_hub -c

The first line is a good idea on all hosts. It checks each minute for work to do, and calls uucico to do it.

The second line is the phone-home bit. In this case, it phones home to a system called main_hub, which in my case, is my public web server. You’ll want this second line on your satellite systems. It basically unconditionally phones home, and checks for instructions.

Great, UUCP works, what now?

Well, now you have a way of sending files between hosts. Two services that run well over UUCP worth investigating:

  • grunt: is a tool for securely running commands on another host. It can work over email or UUCP and uses GnuPG signature verification for authentication.
  • Many MTAs support UUCP as a back-end, such as Postfix. Very handy for sending reminders to yourself in a manner that is guaranteed to be noticed and not get buried in spam.

VK4MSL/BM: The mystery of the bad antenna

Well, for a few weeks now I’ve been (metaphorically) tearing my hair out, trying to figure out why I had such bad antenna problems on VHF.  HF, I still have work to do as right now, the RF just induces currents where it pleases, including in my microphone cabling, but that’s a different matter.  VHF until recently had been rock solid.

I tried replacing coax, re-terminating leads, checking solder joints, replacing antennas.  Yesterday, I re-wired the entire antenna system, doing away with the BNC connectors in the top box and hard-wiring the antenna mounts to the coax inside.  Rode up to Ashgrove today thinking I had fixed the problem.

Nope.

Each bump in the road, I watched the S-meter graph move from S9 to S4 and back again.

What could it be?  Why is it that it only occurs when I’m mobile, and not stationary?  There’s a bad link somewhere, but where?  No amount of jiggling cables was locating the problem.  Finally today, I decided to take a peek inside the FT-857D.

Ohh, well that would do it!

Ohh, well that would do it!

I looked closely at the point where the N connector solders to the PCB. I noticed a small line around the wire where it met the solder blob. So I picked at it with pliers, and pulled it away from the blob: it was a dry joint!

Tomorrow, I shall know if this was the final problem.  At least I don’t run full power on FM, my license only affords me 30W continuous, so the only time I do 50W is when I’m doing SSB at which point it’s only on voice peaks.

Update: It’s been a few days, the difference is like the difference between chalk and cheese.  Prior to the fix my set was deaf as a post, and it’s not hard to see why!