Quozl's Open Source

Quozl works in outback Australia as a firmware and test engineer for a non-profit in Miami that makes laptops for children, and for a telescope as a telescope operator, operations technician, and software specialist.

Quozl worked on Open Firmware (IEEE 1275-1994), which uses the Forth programming language. For many years Quozl maintained the version that is used on the One Laptop per Child computers, the most complete and extensive version ever.

| top | summary by date | summary by category |

C Forth for PlatformIO

Forth Programming
Quozl brought up C Forth on PlatformIO for these target boards;
  • Raspberry Pi Pico RP2040,
  • Adafruit Feather M0,
  • Teensy 3.1, 3.2, 3.5, 3.6, and 4.0,
  • Espressif ESP32.
C Forth is a Forth language environment optimised for embedded use in semi-constrained systems such as System-on-Chip processors.

See Mitch Bradley's C Forth repository on GitHub.

(19 November 2022)

IP over serial on Raspberry Pi

Electronics
How to set up IP over 3.3V serial between a Raspberry Pi and a host computer running Linux.

Prepare the host computer;

  • install the ppp package
    sudo apt install --yes ppp
  • attach a USB to 3.3V serial adapter to the appropriate GPIO pins, and plug it in to the computer,
  • identify the device, let's assume it appears as /dev/ttyUSB0,
  • run as root
    pppd nodetach debug noauth nocrtscts local passive /dev/ttyUSB0 115200 lcp-max-configure 10000

    (this will repeatedly try to establish a connection, because the LCP configure-request transmission count is set very high).
Prepare the Raspberry Pi;

  • install the ppp package
    sudo apt install --yes ppp
  • add two lines to /etc/rc.local before the exit
    systemctl stop serial-getty@ttyAMA0.service
    pppd updetach debug nocrtscts noauth local 10.1.0.1:10.1.0.2 /dev/ttyAMA0 115200
  • reboot
The link will be established, and you can ping or SSH to 10.1.0.1.

Use different addresses if required.

What it looks like on the host computer

using channel 9
Using interface ppp0
Connect: ppp0 <--> /dev/ttyUSB0
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x25b9b80a> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x25b9b80a> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x25b9b80a> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x25b9b80a> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x25b9b80a> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x25b9b80a> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x25b9b80a> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x25b9b80a> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x25b9b80a> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x25b9b80a> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x25b9b80a> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x25b9b80a> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x25b9b80a> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x25b9b80a> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x25b9b80a> <pcomp> <accomp>]
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x25b9b80a> <pcomp> <accomp>]
rcvd [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0xa67760f> <pcomp> <accomp>]
sent [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0xa67760f> <pcomp> <accomp>]
rcvd [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0x25b9b80a> <pcomp> <accomp>]
sent [LCP EchoReq id=0x0 magic=0x25b9b80a]
sent [CCP ConfReq id=0x1 <deflate 15> <deflate(old#) 15> <bsd v1 15>]
sent [IPCP ConfReq id=0x1 <compress VJ 0f 01> <addr 0.0.0.0>]
rcvd [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0x25b9b80a> <pcomp> <accomp>]
rcvd [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0x25b9b80a> <pcomp> <accomp>]
rcvd [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0x25b9b80a> <pcomp> <accomp>]
rcvd [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0x25b9b80a> <pcomp> <accomp>]
rcvd [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0x25b9b80a> <pcomp> <accomp>]
rcvd [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0x25b9b80a> <pcomp> <accomp>]
rcvd [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0x25b9b80a> <pcomp> <accomp>]
rcvd [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0x25b9b80a> <pcomp> <accomp>]
rcvd [LCP EchoReq id=0x0 magic=0xa67760f]
sent [LCP EchoRep id=0x0 magic=0x25b9b80a]
rcvd [CCP ConfReq id=0x1 <deflate 15> <deflate(old#) 15> <bsd v1 15>]
sent [CCP ConfAck id=0x1 <deflate 15> <deflate(old#) 15> <bsd v1 15>]
rcvd [IPCP ConfReq id=0x1 <compress VJ 0f 01> <addr 10.1.0.1>]
sent [IPCP ConfAck id=0x1 <compress VJ 0f 01> <addr 10.1.0.1>]
rcvd [LCP EchoRep id=0x0 magic=0xa67760f]
rcvd [CCP ConfAck id=0x1 <deflate 15> <deflate(old#) 15> <bsd v1 15>]
Deflate (15) compression enabled
rcvd [IPCP ConfNak id=0x1 <addr 10.1.0.2>]
sent [IPCP ConfReq id=0x2 <compress VJ 0f 01> <addr 10.1.0.2>]
rcvd [IPCP ConfAck id=0x2 <compress VJ 0f 01> <addr 10.1.0.2>]
local  IP address 10.1.0.2
remote IP address 10.1.0.1
Script /etc/ppp/ip-up started (pid 80399)
Script /etc/ppp/ip-up finished (pid 80399), status = 0x0
  
(25 September 2022)

Fund Me

Social
Hello. Quozl is twiddling his fingers right now.

Do you need his help? Quozl does engineering mentoring, product management, software and firmware engineering, code reviews, quality assurance, testing, and teaching.

Or would you like to conserve native regrowth forest? Quozl helps manage a few million trees in outback Australia, and the project could do with some funding.

Contact quozl at laptop dot org. Thanks!

(17 April 2022)

C Forth build flow

Forth Programming
Deep dive into how C Forth is built gave this graph.

And this is just one target that C Forth supports; the target for a host-based serial device test harness.

(12 March 2022)

Hector Spectrograph

Social
Quozl was a telescope night assistant during the recent commissioning of the new Hector multi-integral field instrument and spectrograph. A really busy team of scientists and engineers working together to make research happen. It was fun watching them work. Inputs included tea, coffee, muffins, tim-tams, pavlova, and occasional sleep. Outputs were C++, Python, electronics, and data.
(9 December 2021)

Netrek - Vanilla 2.19.0 released

C Programming X-Windows Programming Network Programming
New version of the Netrek Vanilla Server, with many changes.

(6 December 2016)

Embedded.fm on Forth

Forth Programming Electronics
Quozl was interviewed on embedded.fm about the Forth language:

(20 October 2016)

C Forth for Teensy 3.1

Forth Programming
Quozl brought up C Forth on the Teensy 3.1 module. See all the details.

(11 August 2014)

Revalidating PIC 16F84 tools

PIC Microcontrollers Linux C Programming
Ye ol' doorbell was uncovered in a lab cleanup, and one wondered if it was still possible to program it after six years. Also, checking out the move from assembler to C.

(31 August 2013)

Gytha 0.9 released

X-Windows Programming Network Programming
The game of Netrek, a multi-player real-time 2D strategy game, with a full-screen display, sounds, and achievements.

Here's where it gets complicated.

Your team starts with ten planets. Each player flies a starship. You shoot at enemy ships with torpedos and phasers. You fly to, scan and bomb enemy planets to deny their use by the enemy team. You protect your own planets by preventing the enemy from reaching them.

(23 October 2012)

Netrek Client COW 3.3.1 released

C Programming X-Windows Programming Network Programming
Quozl has just released another version of the Linux Netrek Client, with many changes. Never played Netrek? Now's the time to learn.

Pick your flavour. If you've never played, try:

But if you are a regular, try:

(18 October 2011)

Netrek - Vanilla 2.18.0 released

C Programming X-Windows Programming Network Programming
New version of the Netrek Vanilla Server, with many changes.

(18 June 2011)

NetComm V100 VoIP ATA lost password fix

Electronics
How to reset the password on a NetComm V100 VoIP ATA:
  • in an antistatic workplace, remove the front rubber feet, remove the two screws, separate the bottom from the top by 5mm, then exert about 300g of backward pressure on the bottom; it will separate from clips at the back,

  • remove the PCB and place on workbench, locate the four serial port header pins, between the two largest chips, (or imagine a line drawn from the ethernet socket to the WAN LED; the header is half way along that line),

  • attach a 3.3V USB serial adaptor to the header pins, pin 2 is ground, pin 1 is transmit data from the ATA, the pin adjacent to pin 1 is receive data to the ATA, and the pin adjacent to pin 2 is a 3.3V supply from the ATA,

  • configure a terminal program for 115200 baud, and power up the ATA, lots of text will appear,

  • wait for the User name prompt, then hit enter twice, and a [root @ home]$ prompt will appear, like this:
    User name: MAX_VOICE_CHANNELS:3
    Password: [root @ home]$ 
    
  • type auth to enter the user configuration mode,
    [root @ home]$ auth
    [root @ auth]$ 
    
  • add a new user, in the example below the user is qz
    [root @ auth]$ adduser qz -o -services cli -permissions admin
    Enter password: qz
    
     User Name Succefully Added.
    [root @ auth]$ listusers
    1          root                                HTTP CLI FTP    - ADMIN
    2          qz                                  CLI             - ADMIN
    [root @ auth]$ exit
    
  • save settings to flash
    [root @ home]$ save
    save: codectype = 0, dsp = 0
    
    COUNTRY is 6
    **********[Current Flash used is 5739bytes(MAX is 16384bytes)]**********
    
    Configuration saved successfully
    
  • power cycle the ATA, then try to telnet to it with the new username, and explore the configuration options.
      (03 June 2011)

Netrek - Vanilla 2.17.0 released

C Programming X-Windows Programming Network Programming
New version of the Netrek Vanilla Server, with many changes.

(2 September 2010)

Desk Charger Timer

Linux Electronics
If you pay for the power at your desk, and your power is expensive, you learn the value of turning stuff off. Chargers for gadgets seem to multiply, and each adds a bit more to the bill.

Yet they don't actually need to be on all the time.

A quick hack is done to have a Python script turn on a bank of gadget chargers, and turn them off under automated control.

(5 February 2010)

IP over AX.25

Linux Electronics Radio
There's lots of stuff on the 'net for amateur radio operators who want to get into the transmission of internet packets (IP) over radio ... but it is widespread, occasionally conflicting, and often out of date.

Here's a quick attempt to bring things into the current century ... the task is to get a ping(8) between two computers using two handheld amateur radio transceivers.

(24 December 2009)

Netrek - Vanilla 2.16.0 released

C Programming X-Windows Programming Network Programming
New version of the Netrek Vanilla Server, with many changes.

(1 September 2009)

Signal Strength Meter

Network Programming
Quozl was testing a set of One Laptop Per Child units for wireless performance and needed a quick tool that would show the signal strength rapidly rather than the usual method of averaging over several seconds.

(12 August 2009)

/dev/port to /dev/parport0

Linux C Programming Electronics
So you've got an old program using a parallel port on Linux, but it uses /dev/port or direct port access instead of /dev/parport0. Why worry? Because the old method doesn't let you use PCI or USB parallel ports.

Quozl had to fix it. Publishing it in case somebody needs it. Check out the change from k74.c to k74-ppdev.c in my repository.

(19 May 2009)

Kernel Patching to Fix Audio Socket Electrical Damage

Linux C Programming Electronics
Laptop speakers stopped working. Only the right channel of the headphones remains. But using a very old driver made the speakers work. Turns out electrical damage from an attached sound system broke the headphone detection. The operating system was faithfully turning off the amplifier. Software fix to the rescue ... Update: a remastered patch for alsa-driver-1.0.20.

(18 May 2009)

Telstra ZTE F165 HSDPA Mobile Phone on Linux

Linux
Quozl upgraded from a CDMA mobile phone to an HSDPA one, and plays with it on Linux. It has a USB interface, and bluetooth. Update: and now Ubuntu 9.04 recognises it.

(17 May 2009)

Usage Monitoring of a UHF CB Repeater

Network Programming Electronics
Question was, if the ham radio club had to put solar panels in to run the repeater on the mountain, how much power would be needed? Without climbing the mountain to measure it. Here Quozl hacks up a repeater usage monitor, consisting of a spare handheld radio connected to a laptop audio input.

(31 October 2008)

Starting APRS on Linux

X-Windows Programming Network Programming Electronics
Automatic Packet Reporting System (APRS) is an amateur radio system for real-time tactical digital information. How do you get started with APRS on Linux in Australia? Install xastir, configure it to grab data, watch the event stream build on a map.

(15 October 2008)

Rain Gauge Restoration

Electronics
Restoring an old gauge to measure rain, using a pedometer as the counting display.

(14 October 2008)

VK2LQZ

Radio
Quozl has upgraded his amateur radio license after passing an exam, and is now able to use more power and exotic modulation methods.

(08 August 2008)

Netrek Client COW 3.2.4 released

C Programming X-Windows Programming Network Programming
A new version of the Linux Netrek Client, with many changes. Never played Netrek? Now's the time to learn, given the active development team.

Some of the changes are:
  • play, fixed inability to fire a stream of eight torps when in TCP mode,

  • play, fixed a delay in responding to keyboard and mouse events,

  • clue play, display mid-galactic messages relating to INL mode games, including pregame, pause, and time left in game.

  • metaserver list window, changed default metaserver mode to UDP,

  • graphics, menu styles adjusted to remove thick white lines,

  • graphics, finished full screen and camera support,

  • login, fixed delay,

(16 July 2008)

Copy In Place

Linux
Frustrated by not finding the right program to complete a partial copy of a file over NFS, Quozl writes something to do it.

(8 July 2008)

Xtank 1.3f for 800x600

Linux C Programming X-Windows Programming
Remember Xtank? Contributions are sought. Update 2017: see https://github.com/lidl/xtank

Quozl had packaged Xtank 1.3f for Debian GNU/Linux 3.0 (Woody) back in 2001, and for 3.1 (Sarge) in 2004, modified for 800x600 monitors. Now contributions are encouraged against the source repository ... there are a few opportunities to fix things ... the threading, the robot programs.

The 800x600 style 2004 binaries: add the following line to your /etc/apt/sources.list file:

deb http://quozl.linux.org.au/xtank ./

... and then

apt-get install xtank-north

(7 July 2008)

Human Interrupt Request Lines

Linux C Programming Electronics
As a software engineer, Quozl often sees himself as part of one great big system, in which he is a component subsystem, along with whatever computer he is using.

But in a reactive role, where most of the time is spent responding to one interrupt after another, one needs a way to service these human interrupts. Most people seem to do it with telephone ringers, text message alert tones, pagers, or popup windows. Focus stealing is annoying. Lose of concentration more so.

Hence the TCP/IP Distributed LED Mimic Panel, consisting of an array of eight LEDs driven from a parallel port that sits on the desk, and a set of spare computers around the house with displays that show a graphical version of the same panel.

(16 April 2008)

Newspaper

Social
Quozl was in the Sydney Morning Herald on page 3 on 2008-02-12, and the article was fairly accurate, but some editorial practices may have changed the story ... the corrections are:
  • certainly not a farmer, though living on a farm,

  • it is not currently dusty, though it was during the tests last year,

  • it is not currently locust-plagued, though it was during one test,

  • the 45 degree charging limitation was inherent in the NiMH chemistry, what was really discovered were 45 degree environmental conditions.

(12 February 2008)

DVB-T on Linux in Australia

Social Linux
Quozl began watching television in the past few years, mainly because Doctor Who had returned ... the first "television" was a junk box VHS VCR attached to an LCD monitor via composite video, ... the second was a borrowed DVD+RW DVR to replace the VHS VCR, ... and the third just completed is a $AUD45 DVB-T PCI card in a Linux system acting as a video streaming server and digital recorder.

(27 December 2007)

Delta

Social
Quozl is directing a programming camp in Brisbane, Australia. If you are in year 11 or year 12 at school, and want to learn how to program computers and join the open source community, please think about joining us. The camp is in January 2008, and has strictly limited places.

(5 December 2007)

Order Queue Display

Network Programming
A shop or event display node with multicast capability, for use at a village barbeque or bistro, written in Python and Pygame.

Think of a node with a keyboard, and any number of nodes without keyboard, connected via network. The operator types a message, which appears on their node during composition, then when the commit key (TAB) is pressed the message appears on all other nodes.

Additional features:

  • messages are automatically sized to fit the available screen dimensions,
  • multi-line messages are possible, type Enter between lines,
  • editable history of previous messages, using the up and down arrow keys, in the style of a shell,
  • any node can be a master, all it takes is a keyboard,
  • nodes that are alive are listed on a master node, and if a node goes missing, it will fail to appear,
  • displays can be mounted upside down, inversion is by command line option or by keyboard control on the display node,
  • special control keys for reboot, poweroff, runlevel change, re-executing.
Resources:

(19 October 2007)

One Laptop Per Child

Linux
Quozl has done some rural radio range and other testing for the One Laptop Per Child project.

(14 October 2007)

TaskJuggler

Social
Project management software for those who think best in a text editor, rather than a point and click interface. TaskJuggler seems to do quite nicely. One defines a set of tasks, even a hierarchy of them, and then hit the schedule button and you get a nice Gantt chart or as much XML or HTML as you want.

Because the project is expressed as text, it is easy to integrate it with project source control systems. TaskJuggler can run in a script to update a project web page. It will even generate its own Makefile if you want.

Keep it in mind for next time you need to plan something.

(24 August 2007)

af-ping, an audio frequency ping

Linux Network Programming
For the radio range testing on the One Laptop Per Child project, Quozl added sound to Lars Strand's Python ping program

Now it makes a sound where the pitch is related to the time it takes for an ICMP Echo Request packet (ping) to be returned as an Echo Reply. By default, the pings are at about 20 times per second, set by the length of the sound samples. Such rapid feedback makes it easier to learn where wireless coverage is good, or bad.

It can also be used for reporting the health of an internet connection, using the --noflood option, but the output may be irregular because the PCM device is not being fed at the speed it desires.

(26 July 2007)

Tooraweenah Wireless

Social
Travelling in my area and need a quick net fix? Tooraweenah's Community Technology Centre has an open wireless access point, with 1500kbit/sec ADSL behind it. The essid is tooraweenah.com, and the antenna is at 1.5m elevation from floor level. There is usually adequate parking nearby.

While you are there, the pub does liquids and foods, and the best coffee is from the reasonably modern vending machine in the hardware store. One of those automatic ones that grind real beans.

Tooraweenah is roughly half way between Gilgandra and Coonabarabran, on the Newell Highway, New South Wales, Australia.

(20 July 2007)

Build your own UPS

Electronics
After a UPS was destroyed by lightning, Quozl has made his own from the otherwise working batteries. It's nothing much, but if you've got a set of batteries that need a use, here's one way to do it. Combines a battery charger, the batteries, and an inverter, to power a computer. If the power goes out, the computer continues to run from the batteries.

Update: more batteries added.

(2 April 2007)

Maxon BP3-USB 3G Wireless Modem on Linux

Linux
Quozl is lent a 3G wireless modem by a manufacturer to check it out on Linux.

(9 January 2007)

Doorbell

PIC Microcontrollers Electronics
Quozl needed a doorbell pulse extender, to make sure that when people press the button the noise will occur for a defined time, and pressing the button again won't trigger it again. The circuit is a very simple use of a PIC microcontroller.

(18 September 2006)

VK2FQZL

Radio
Quozl has been licensed to operate amateur radio transmitters, and has started talking on the local net. A whole new world, which was already radiating into his home.

(11 September 2006)

Radio & Electronics School

Radio
Quozl recently began a ham radio course from the Radio & Electronics School in Australia. The course content is only supported on Microsoft Windows, but it is practical to view it on Wine.

(2 September 2006)

Light Switch

PIC Microcontrollers Electronics
Quozl needed another night light in the kitchen, so used a couple of bright LEDs and a control circuit connected to a motion detector.

(12 August 2006)

PPTP Client GUI

Linux Network Programming
Update: new version released.

Quozl has written a graphical user interface for the PPTP Client project for which he is release engineer. Built using Glade and PHP-GTK, the program allows the configuration and management of PPTP tunnels.

(22 February 2006)

tcpxd - Another TCP/IP Generic Relay

Linux C Programming Network Programming
Update: now available as a darcs repository

Security update for tcpxd, version 1.4 fixes a vulnerability to crafted reverse DNS names.

Quozl had checked out netcat and numerous other TCP/IP relays, but none had all the features he needed, so he rolled his own. This one is optimised for minimal process count and maximum performance for X connections.

(20 February 2006)

apt-walkabout, a take-away APT cache

Linux
Update: now available as a darcs repository

Have you ever felt that no .deb should ever have to be downloaded more than once? apt-walkabout is an APT package cache on a pen drive, or any other removable media. apt-walkabout helps you to upgrade non-connected or low-speed linked Debian systems; be they yours or someone elses that you visit.

It's just a few shell scripts; but it's the idea that counts.

(25 October 2005)

LK450-AA and LK46W-A2 Keyboard Maps

Linux X-Windows Programming
In December 2000 Quozl wrote up how to use Digital Equipment Corporation LK450 or LK46W keyboards with Linux. The kernel has changed since then, but the keyboards still work.

for use with kernel 2.6.9 and later, with setkeycodes, which enables the keys otherwise not known by the kernel, for Intel Linux, for Alpha Linux. To use an xmodmap file, give it to the xmodmap program as the first argument. For example, add xmodmap lk450.xmodmap to your .xsession file.

Why bother? It lets Quozl run emacs in EDT emulation mode, allowing his source editing to follow hindbrain original programming, without having to learn new keystrokes just to get going.

(14 September 2005)

Outback Two-way Satellite on Linux

Linux
Quozl bravely tries a two-way satellite service on Linux.

(3 August 2005)

Alarm Clock

Electronics PIC Microcontrollers Linux
Quozl was sick of his old alarm clock and made a new one, easier to use, much more intelligent, but above all heaps of fun.

Update: a schematic diagram for the project.

(12 June 2005)

Music Compositions

Linux Social
Quozl's been having fun with qsynth, qjackctl, and rosegarden4, so he dusted off his musical composition skills and had a go at writing some atmospheric music.
(9 June 2005)

CDMA 1x RTT on Linux

Linux
Quozl bravely tries a CDMA modem on Linux.

(2 November 2004)

Distributed Compressloop

Linux C Programming
Quozl had some fun reworking Rusty's compressloop code to distribute the compression of Knoppix ISO images across a number of antique computers, since there wasn't anything faster available.

(17 July 2004)

Prepaid Accounting

Linux
Version 1.4 released 21st June 2004.

Quozl wrote a prepaid accounting system for the Gilgandra Community Technology Centre, which is used by the staff and the customers of the centre to track time spent. It uses the Linux system accounting files to generate usage transactions, stored in a plain text database. Based on PHP, the system also provides up to the minute account balances and accepts payments and charges.

(21 June 2004)

Netscape Communicator to Evolution Mail Conversion

Linux
Quozl recently had to convert someone's e-mail from Netscape Communicator to Evolution, but without losing anything. There were hundreds of folders. Evolution 1.4.5's import wizard did not recognise the nsmail directory, so rather than hundreds of file imports, a bash script was written.

(7 May 2004)

Tandy 102 TCP/IP Draft Implementation

Network Programming
Quozl once made mention on a Tandy 102 mailing list that he had written the start of a TCP/IP protocol stack for this ancient machine. It is now released under the GNU Public License. It was based on fth100, a Forth implementation for Tandy 100 laptop computers.

(13 April 2004)

BlueTooth

Electronics Linux
Quozl bought a couple of 100m USB BlueTooth dongles and tried them out, making a coverage map.
(8 February 2004)

Script-Friendly TCP/IP Server Tester

Linux C Programming Network Programming
Quozl wrote a tiny program that tests a TCP/IP service by attempting a connection and then reporting to standard output. No data transfer is done. It is intended for use in scripts for testing availability of critical services, as it generates an easily parsable output along with meaningful status codes.

(12 October 2003)

Psuedo-Random LED Flasher

PIC Microcontrollers Electronics
Quozl made a little gadget to cause visitors to ask what it was. Just one cheap microcontroller chip, an LED, and a power supply. Updated to include schematic and PCB instructions.

(15 May 2003)

Pump Controller

PIC Microcontrollers Electronics
Drought in outback Australia, so Quozl made a solar powered pump controller to pipe water from a well 2km away to his house. A 40-pin microcontroller used to control a pump ... overkill, but fun.

(23 December 2002)

Uniden UH-040XR Interfacing

PIC Microcontrollers Electronics
Quozl wanted to interface a PIC to a UHF CB.

(22 December 2002)

Netrek Vanilla Server 2.9pl8 Released

Linux C Programming Network Programming
Quozl released version 2.9pl8 of the Netrek Vanilla Server. This release pulls together changes made by the team during the previous league seasons, and is the first release since April 2001. Quozl leads the Netrek Vanilla Project, an open source game server for the game of Netrek.

(6 December 2002)

Irrigation Controller

PIC Microcontrollers Electronics
Quozl has developed a very simple rotary irrigation controller for his vegetable garden. Used to replace one water valve with three, it allowed the re-use of cabling to a valve location.

(16 July 2002)

Netrek Australia

Social
Old friends will know that Quozl has played Netrek for many years. A new Netrek server for Australian players is now set up, along with a mailing list and web page.

(26 March 2002)

Tooraweenah

Social
Quozl lives with his wife in outback eastern Australia, near a tiny village called Tooraweenah. Since people frequently ask "Where is that?", we've written a page about it.

(25 March 2002)

Temperature Sensor

PIC Microcontrollers Electronics Linux
Quozl has developed a temperature sensor circuit for computers to monitor temperatures, but with sufficient intelligence on the circuit so that it can be used with any computer that had a serial port.

Update: released source code for the microcontroller program under the GNU Public License.

(13 January 2002)

Kitsrus Telephone Call Logger

Linux C Programming Electronics
Two Linux or UNIX programs for the Telephone Call Logger kit 164 sold by Kitsrus. Includes a logging daemon (k164d) for unattended use, and a GTK+ based GUI (k164).

(16 December 2001)

GTK+ Focus Watch

Linux C Programming X-Windows Programming
Asks your X server which window you are using and uses the information to charge your labour to different time tracking tasks. Useful for people who want to figure out which windows they are spending their time in, or those who need to fill out a timesheet to get paid.

Stable release 1.0, two years after initial development release.

(26 November 2001)

Linux Speedometer, Odometer, and Trip Computer

PIC Microcontrollers Electronics Linux C Programming
Implemented on a 386/25 8Mb DECpc laptop, this Linux application attaches to a PIC 16F84 microcontroller which is then attached to a vehicle speed sensor. The program displays current speed, distance travelled, and allows the marking of waypoints and the calculation of distance to the next town.

Update: adjustments for higher sampling rates, and a schematic contributed by a reader.

(19 October 2001)

Issues List

Linux
Version 1.0 released 4th September 2001.

Quozl wrote an issue tracking system for the Gilgandra Community Technology Centre, which is used by the staff and the technical volunteers to track technical issues. Uses PHP and a plain text database.

(4 September 2001)

Netrek Vanilla Server 2.9pl7 Released

Linux C Programming Network Programming
Quozl released version 2.9pl7 of the Netrek Vanilla Server. This release pulls together changes made by the team during the previous league seasons, and is the first release since June 2000. Quozl leads the Netrek Vanilla Project, an open source game server for the game of Netrek.

(23 April 2001)

Avoiding Microsoft Systems

Linux Network Programming
Quozl went to the DECUS Symposium in Sydney during March 2001. Dan Shearer was on the schedule to present a provocatively titled paper "Avoiding Microsoft Systems with Enterprise-Scale Free Software". However, Dan was unwell and could not attend. There were a few people who turned up anyway, so Quozl decided to write and present a paper of the same title for the next day of the conference.

(3 April 2001)

PIC 16F877 Uptime

PIC Microcontrollers Electronics
Quozl continues work on his PIC parameter passing stack, building some more general purpose modules within the architecture. This example program includes modules for LCD display access, vectored execution and binary coded decimal conversion.

(5 March 2001)

Emu Fat Monitor

PIC Microcontrollers Electronics Linux Social
The outback emu farm up the road had a dodgy freezer. Quozl used his temperature sensor for remote monitoring, using a pair of decrepid modems as lightning protection. Read all about it.

(3 March 2001)

PIC 12C509 Stack Math Package

PIC Microcontrollers
Quozl wrote a stack math package for the PIC 12C509 processor. The code contains contains addition, subtraction, multiplication and division code for 16-bit signed integers, using a first in last out data stack based on the FSR and INDF registers. It aims for efficiency of file register space rather than code space efficiency. Full documentation is in the source file.

(20 February 2001)

Linux PIC Programming

PIC Microcontrollers Linux
Modifications to the Prog84 package to support 24C65 serial EEPROMs, and the various David Tait style programming boards.

(11 December 2000)

Wanted

Linux
Quozl is looking for a few things. Maybe you can help? Have a read through the list of outstanding requests.

(10 December 2000)

Farmwide Advanced Internet

Social
Quozl was asked to present a course on web page design for a nationally funded project to increase the internet use among farmers. The presentation material is available here, in two classes.

(17 November 2000)

Linux Halt Beep

Linux C Programming
Quozl had an old 486/100 that was shutdown daily, but it normally had no monitor attached. He needed a way to tell that it was ready to be powered down. This patch against 2.2.12 adds a small fragment of code to generate a descending tone sequence just after the "Power down" message.

(The function kd_mksound() from drivers/char/vt.c was used. This function starts the tone generation and normally schedules a timer to turn it off. Since the timers do not run at this point, the duration of the tones had to be set using msleep() macro calls.)

Since writing this, Quozl has been told that it could have been done in a process executed after the disks are unmounted. Oh well. Not half as much fun! Here's how, on Debian ...

  1. create a file /etc/init.d/beep containing the sound effect, for example:

    #!/bin/sh
    echo -n "\007" > /dev/console
    sleep 1
    echo -n "\007" > /dev/console
    sleep 1
    echo -n "\007" > /dev/console

  2. link it to the run level 0 so that it executes on shutdown

    # cd /etc/rc0.d
    # ln -s ../init.d/beep S85beep
Got too many machines shutting down? Consider the Debian package morse, which will let you emit a morse code signal identifying the machine.

(14 November 2000)

PIC 16F84 to 12C509 Porting Checklist

PIC Microcontrollers
A checklist of things to look out for when porting code from a PIC 16F84 microcontroller to the smaller, cheaper, PIC 12C509.

(29 December 1999)

Videopad Base Station Protocol Daemon

Electronics Linux C Programming Network Programming
Quozl is releasing under the GNU Public License code that he wrote to interface a Linux system to a Granite Communications Base Station BS5, an exotic device that talks over radio to a Videopad VP5 hand-held LCD keypad terminal.

(11 July 1999)

Technical Aid to the Disabled Projects

PIC Microcontrollers Electronics
Quozl works as a technical volunteer for Technical Aid to the Disabled. PIC Microcontrollers were used in the projects to reduce cost and complexity, and Linux was used extensively.

(7 July 1999)

Remote Weather Station using Tandy 102 Laptop

Social Electronics
Quozl owns half a mountain with a weather station on it, and some of his friends who also have these old Tandy 102 laptops were interested in pictures of how it was done. A Linux system is used to graph and summarise the data. gnuplot is used within a PERL CGI script to deliver the graphs to a web browser as inline GIF images.

(18 February 1999)

Netrek Vanilla Server Administration GUI

Linux C Programming X-Windows Programming Network Programming
Quozl leads the Netrek Vanilla Project, an open source game server for the game of Netrek. One of his contributions to this project is gum, a GUI front end to the server configuration files. It was implemented using GLADE on GTK.

(1 February 1999)

Mirrors

 
Australia http://quozl.linux.org.au/
United States http://quozl.netrek.org/

Choose your closest copy. My thanks to Linux Australia and Real Time Enterprises for providing places to put this page.


quozl@us.netrek.org