Friday, September 13, 2013

Frankenrouter continued - getting the LCD to work

I previously wrote about my fiddling with lcdproc and tip to get characters to display.  After much initial failure, I finally got a working LCDd.conf for lcdproc.  For the impatient, here it is:

[server]
Driver=MtxOrb
DriverPath=/usr/local/lib/lcdproc/
Hello="   Hello World  "
Hello="      2013      "
ServerScreen=no
Heartbeat=off

[MtxOrb]
Device=/dev/cua01
Size=16x2
Type=lkd
Speed=19200
hasAdjustableBacklight=no

 The device is an old Matrix Orbital LK162-12.  The technical reference is here.  It took me some time with ktrace/kdump and the technical reference to figure out that the LCDd.conf Type= should be lkd, not the default lcd.  It looks like the LCDd at every refresh interval sends out "backlight on," "GPO off," and "underline off," commands.  On this screen, the "GPO off," command requires an extra argument as it has 6 GPOs, so the 0xFE part of the "underline off," command was getting chomped, leaving a bare K on the LCD in various places.

Tuesday, September 10, 2013

More on frankenrouter (the Netscaler reboot as OpenBSD)

Well, I had to shelf this project for a while, but back in full force, today.

Today's problem took me most of the day to figure out.  This is yet another one of the "both CARP servers are masters," issues that seem to plague CARP newbies.

If you're configuring from /etc/hostname.carp0, and you like to bust your ifconfig statements into multiple lines, you may find that you need to put all the little CARP things ahead of the plumbing of the actual IP address.  To wit, this config just wasn't working for me:

inet 192.168.0.1 255.255.255.0 192.168.0.255
-inet6
carpdev em2
vhid 1
pass gandalf


However, this one works fine:


-inet6
carpdev em2
vhid 1
pass gandalf

inet 192.168.0.1 255.255.255.0 192.168.0.255

Tuesday, July 30, 2013

Turning an old NetScaler into something useful

A couple of years ago, we picked up a pair of used NetScaler NS7000s.  We had them in service for a while, but eventually they became obsolete - we didn't have a NetScaler support contract, and there were new features we needed.  So, we replaced the old NetScalers with a different solution.

Last week, I hit upon an idea for a new project, and the NS7000s with their 8 onboard NICs was a perfect hardware platform for me.

For those that don't know, NetScalers run FreeBSD under the hood.  These particular units were running something from the 4.x series.  For comparison, the current release version as of this post is 9.1.

These units boast a single Pentium 4 2.8GHz processor and 1 GB of RAM.  They have dual onboard SATA ports, a single hot-plug 3.5 inch hard drive bay, and the primary IDE is jacked into a CompactFlash reader.  There is also an onboard CF jack, but I have not fiddled with it; presumably, this is the second IDE channel.  The two COM ports are attached to the serial console and the LCD display, respectively.

Step one was to try and recover any useful information from the old hard drives and CF cards.  Bit rot had set in, though, and of the 4 units, only one hard drive was readable.  Not much useful stuff, there - apparently the NetScaler products have root on the CF and /var on the hard drive.

So, I sourced new hard drives and CF cards and got to work.

Day one, I downloaded OpenBSD 5.3 x86 and performed a clean install to a hard drive.  I made a little /etc/rc.local script goodness to capture the output of dmesg to a text file.

I placed the hard drive into one of the NetScalers and fired it up.  I was a little concerned, initially, that the LCD still said Booting...  So, I let the unit sit for about an hour.  Then, I took the hard drive back out and mounted it up somewhere that I could look at the dmesg output.

SUCCESS!  The box booted clean and I could see em0 - em7 listed.

Next step was to identify each interface and get one plumbed up.  This was something of a trial-and-error effort.  I eventually gave up, broke down and purchased a new serial cable so I could get on the console.

Once logged in to the console, building the physical jack to interface map was pretty easy.  On both units, I got the same map, which looks like this (YMMV):
PHY | INT
---------
1/1 | em3
1/2 | em0
1/3 | em5
1/4 | em4
1/5 | em7
1/6 | em6
1/7 | em1
1/8 | em2
I was using a gigabit switch to talk to the unit.  All of the interfaces showed up at 1000baseT when I plugged them in, and herein lies the first real curiosity of this platform.  I was only able to get 1/7 and 1/8 to ping reliably.  The other ports had major packet loss and tremendous response times.  A close inspection of the front bezel shows jacks 1/1 - 1/6 are marked FE (fast ethernet), with 1/7 and 1/8 marked GB.  With this in mind, I tried massaging the interfaces down to 100baseTX and voila!  Working ports 1/1 - 1/6.

The next piece was to get NS7000 Booting... off the LCD console.  Luckily, it was a well documented piece of hardware from Matrix Orbital.  Unfortunately, I haven't been able to get any of the sample code or LCDproc to work with the unit, but I can use tip to connect via the terminal and put characters on the display, so it's just a matter of time.

Thursday, February 2, 2012

Getting OpenVAS running on Ubuntu 11.10

A couple of quick hints, basically an unofficial update to the official installation instructions located here.

The correct add-apt-repository command is:
add-apt-repository "deb http://download.opensuse.org/repositories/security:/OpenVAS:/STABLE:/v4/xUbuntu_11.10/ ./"
I didn't bother to find the correct GPG key, though; I skipped the key import and used the "force" option with apt-get update.

You will need to go into the "Manage Repositories" screen an uncheck the "Source" repository that was automagically added.  I'm sure there's a fancy command for this, but again, going with what works, here.  You must do this prior to the apt-get update command.

Wednesday, February 1, 2012

3d laser scanning

So, have you ever looked at a trinket on your desk and said, "hey, that would be cool to have in Second Life?"

Well, with a little persistence, you can pretty much do it for free.  Assuming you already have a decent webcam, a laser pointer, and a wine glass, you're ready to roll.  The rest of this post is extremely unorganized, and I have no pictures to share (yet).

First, snatch the software.  You'll need Blender and DAVID-Laserscanner 3, both of which are free downloads.  DAVID will operate just fine in free mode in a resolution that is far superior to anything you'll be able to put into a sculptie.  Read the DAVID instructions carefully, but, truthfully, it's not hard at all.

I'm just getting past the proof-of-concept phase, so not much to report.  My first scans were with the guts of an old Black & Decker Bullseye, but I've graduated to this 532nm green laser I picked up off Amazon for about $8.  The wine stem method works great - just shine the pointer through a clean, thin glass or crystal wine stem to get a nice, thin lased line.

Depending on my success, I'm going to upgrade to a dedicated laser line generator, which I'll probably be grabbing from Aixiz.  If you're curious how lasers compare to each other, I found a neat tool here.

Looking for a good alarm tone?

Looking for a nice, loud alarm clock sound for your phone?  I've been using one of these ringtones from 808 State for several months, now.  Bonus - they have loads of free tunes on this page.

Tuesday, November 30, 2010

A Browser in Korn

Here's a quick tcpclient how-to implementing a simple web browser:

#!/usr/local/bin/ksh

printf "GET / HTTP/1.1\r\n" >&6
printf "Host: www.blogger.com\r\n" >&6
printf "User-Agent: Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.9.2.4) Gecko/20100630 Firefox/3.6.4\r\n" >&6
printf "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n" >&6
printf "Accept-Language: en-us,en;q=0.5\r\n" >&6
printf "Accept-Encoding: gzip,deflate\r\n" >&6
printf "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n" >&6
printf "Keep-Alive: 115\r\n" >&6
printf "Connection: close\r\n" >&6
printf "Cookie: name=value\r\n\r\n" >&6

while read -u7 input; do
        echo $input
done


Save that into a file called http.sh then issue forth the incantation:
$ /usr/local/bin/tcpclient www.blogger.com 80 ./http.sh || echo connection died