Whistle InterJet

All About the Whistle InterJet


Welcome!

The Whistle InterJet was an amazing SOHO "Internet in a box" appliance -- mail server, web server, and gateway for the entire office of the 1990s. It had a ton of innovative features for the time -- elegantly simple in its design.

Our mission: figure out cool things to do with the amazing and wonderfully well-designed InterJet -- rescuing hardware, preserving software, installing modern versions of NetBSD, preserving and recreating original functionality, and extending its usefulness. Hack value is also a high priority. :)

If you have an InterJet, please contact me! It is vital that we document and preserve surviving hardware.

An InterJet 200 running NetBSD 11, beside an original Whistle Communications mug.
An InterJet and its mug (sold separately)
InterJet front panel at power-on under WhistleWare 3.0.3: the Whistle logo and the clock.
WhistleWare after startup, with whistle logo
An InterJet 120 and two InterJet 200s booting NetBSD 11. The Whistle logo is drawn by our NetBSD kernel patch, not by WhistleWare; the boot stage (dhcpcd) shows beneath it.
Three InterJets booting NetBSD 11
The IBM-branded InterJet II, netbooting: the panel shows the loader.
The IBM InterJet II, with netboot output
The InterJet mainboard in its chassis, side open: ALi chipset, memory modules at left.
Inside an InterJet. Mainboard plugs into a backplane below
An InterJet 200 running NetBSD 11, beside an original Whistle Communications mug. X
InterJet front panel at power-on under WhistleWare 3.0.3: the Whistle logo and the clock. X
An InterJet 120 and two InterJet 200s booting NetBSD 11. The Whistle logo is drawn by our NetBSD kernel patch, not by WhistleWare; the boot stage (dhcpcd) shows beneath it. X
The IBM-branded InterJet II, netbooting: the panel shows the loader. X
The InterJet mainboard in its chassis, side open: ALi chipset, memory modules at left. X

More photos...

What's new



HELP SAVE the InterJets!

Since this site was first stood up in the early 2000s, InterJet hardware has become dramatically more endangered.

If you have an InterJet, please contact me! It is vital that we document and preserve surviving hardware.

How you can help - we need:

And if you have an InterJet that you no longer need, please consider donating or selling your InterJet (I will pay shipping and handling - contact me!)

Back to top


What is an InterJet?

The InterJet was a small office's whole Internet setup in one box: the connection out (by modem, ISDN or frame relay), the firewall, and the office's mail, web and file server. Made by Whistle Communications of Foster City, California; the earliest software release we have recovered dates from December 1996.

The InterJet won awards.. but ISPs were not keen on selling a third-party box. Frustrated would-be buyers nicknamed it "the nicest box you couldn't buy" (Jeremy Allison, a former Whistle engineer).

The InterJet II (1999) moved to a single-board approach, 32MB of RAM, internal power supply, and no onboard UPS.

Both generations of InterJet were designed to be easy to deploy: you bought one from your ISP (see Providers), plugged it into a phone line and your office network, typed in a serial number the ISP gave you (using the keypad), and it configured itself. Everything else was done via browser, with a set of pages Whistle called "agents".

The InterJet's software ("WhistleWare") had some solid OS chops under the hood. It was based on FreeBSD (2.2.x in the first-gen InterJet). Whistle's tech team even included some well-known FreeBSD developers. And the work they did for the InterJet was contributed back to FreeBSD -- notably netgraph (a networking framework) and "soft updates" (filesystem resilience). components page.

In June 1999, IBM announced it was buying Whistle -- in part (according to Allison) because the InterJet had sold reasonably well in Japan (where NTT was its distributor). So there's an entire branch of the InterJet history and lineage centered in Japan (see the InterJet in Japan, in Japanese).

IBM's direction post-acquisition positioned the InterJet II as part of its Small Business WebConnections line. InterJet II got updates until at least WhistleWare 4.3 in August 2001 (the last release we know of. IBM later dropped the product.

Decades later, InterJet hardware is endangered: units lost to time, and drives failing on those that remain. Which is why we need your help.

Back to top


Hardware and OS info

NetBSD is now the recommended base OS (due to ongoing 486 support)


Part / subsystem Details
CPU Cyrix 486DX4 75MHz (capable of 100 but appears to be underclocked, probably for thermal reasons?); has FPU; no CPUID
Chipset ALi M1489; ISA, no PCI BIOS
BIOS General Software Embedded BIOS 3.1, Whistle build of 1996-04-27. Has no config options / interface. No serial redirection -- POST needs an ISA VGA card
RAM 8 or 16MB as shipped; 2x 32MB 72-pin FPM SIMMs for 64M (the most the BIOS can report)
memory count At some power-ons, the BIOS reports 7168 kB instead of 64512 kB; warm reboot skips the count. Seen only on units upgraded higher than 16MB. If your OS can override BIOS memory count, that may help (works on NetBSD)
netboot ROM BOOTP and NFS, a.out kernels only. Two versions: 7621012-3 BIOS finds only WD80x3 cards with Whistle's own MAC prefix, 7621012-2 finds NE1000/NE2000. To trigger the onboard netboot menu, press Enter once immediately after "Power check" shows on the panel
serial ports COM1 0x3f8 irq 4; COM2 0x2f8 irq 3 (LCD); COM3 0x3e8 irq 5 (modem, if installed). All 16550A. NetBSD calls them com0 through com2
front panel 128x64 graphics / 20x8 text and keypad, both on COM2 at 57600; see control map. ESC W arms a watchdog that resets the machine. Don't send pending further testing
network Hub card is an NE2000; single and dual-port cards are WD80x3 (WD8013EBT)
disk No INT 13h extensions, so C/H/S only - keep the MBR, boot blocks and kernel below cylinder 1024 (recommend OS root partition under 480MB). Transcend 8GB 40-pin IDE flash modules have been tested and work well (use 63 sectors / 16 heads if prompted by NetBSD install). Standard IDE-to-CF adapters should also work, but have not been tested
sound Classic full-sized PC speaker in every unit, and a SoundBlaster on the mainboard of every unit examined: an ESS ES488F at 0x220 irq 7 drq 1, both driving the same internal speaker. Driving the speaker directly freezes entire system, so the clock will drift unless reset on exit, so using the SoundBlaster is preferred
modem Internal analog modem on COM3; answers AT. USR 33.6 Sportster Fax family. Supports Caller ID, but not voice features
frame relay card Whistle synchronous serial card for a CSU/DSU, MK50H28. Stock in the 200 models. External connector is female 25-pin
video None onboard. 16-bit ISA VGA cards should work (a few tested), but watch for conflicts with other cards (can prevent a stock WD80x3 card from netbooting)
keyboard Motherboard connector J7, has been successfully wired
boot options No floppy header; CD-ROM works as slave but cannot boot; no USB -- install with drive in another system, or use netboot (see above)
battery Internal UPS, 12V 1.3 Ah SLA. With battery installed, the rear switch puts the unit on battery (power LED goes amber), which is frankly badass - you can just pick the thing up and move it across the room and then plug it back in. Replacement batteries are a little smaller than the original, so may need at thicker pad than the original between chassis and battery
power off Power off: rear switch first, then on the keypad 2-5-8 simultaneously. Warning: cuts power without telling the OS -- sync or halt first! Also, sending ESC X on COM2 has two behaviors: powers off (when on battery), or power-cycles (when on mains)
model variations 100/120/140/200; the 200 adds a frame-relay card. Model sticker on the bottom (also a substring of serial)

Task Status
NetBSD 11.0/i386 DONE - runs multiuser on a model 120 and on 200s (dmesg for a 200) - full howto pending (Royce)
kernel DONE - INTERJET_64M: GENERIC_TINY plus options REALBASEMEM=639 and REALEXTMEM=64512. Both required to override the bad BIOS value. Cross-build only (unit too slow to compile directly)
memory Needs more than 16MB in practice (64MB recommended). Set REALEXTMEM to the unit's RAM less 1MB (31744 for 32MB); too high will corrupt memory
console DONE - com0 at 9600: installboot -e -o console=com0,speed=9600, and consdev=com0 in /boot.cfg
boot blocks DONE - C/H/S only. Stock bootxx can hang after "Loading system..." unless you set its stack to 0x7c00
install DONE - install on another PC and move the disk, or over the network (see hardware tab). Ensure disklabel shows partition a, or else root will not mount (error 6)
netboot DONE - wrap the ELF kernel as a.out for the ROM (a 32-byte stub). The NFS server needs NFSv2: NetBSD serves it, Debian 12 cannot
network DONE - ne1 and we0 in one kernel depending on which card is installed. Stock GENERIC_TINY has the wrong shared memory address for we
LCD and keypad DONE - lcdd, a /bin/sh daemon: status screen, some menus in the style of the original, and boot progress; the kernel draws Whistle's logo at boot (patch)
speaker DONE - enable attimer0, pcppi0, sysbeep0 and spkr*; can play Whistle's boot chime (mid quality) when the SoundBlaster is unavailable. Getting the optional NetBSD three beeps at halt needs two patches (PR kern/60735)
power off DONE - with lcdhalt_escx=YES, shutdown -p sends ESC X (patch) on battery only (on mains power it halts immediately). DO NOT send ESC X unless the OS is halted
"Bad address" during netboot install FIXED - a race reading CR2 in the i386 trap handler: ~7% failures without fix, none after (not reported to upstream yet)
modem DONE - attaches as com2 and answers AT with cu
frame relay In progress - custom driver wfr attaches and passes IP in loopback, but not tested on real connections yet
SoundBlaster DONE - sb0 at irq 7 drq 1 plus audio*: the onboard ESS ES488F, in every unit, with no card needed. Plays Whistle's recordings without stopping the system
tuning PTYFS required for ssh; root mount noatime,log; set postfix=NO in rc.conf; localcipher = blowfish,6 or logins take 10 s. No pkg_add / pkgin on the unit (too big for RAM) - install on a faster system with package altroot options, then rsync over. Also disable ntpd (but ntpdate is OK); working on chrony config (Royce)
harmless boot messages "1 error while detecting hardware" (the Cyrix cache warning); "wsbell at spkr0 not configured"

Task Status 2026
RAM testing DONE - (2) 32MB 72-pin FPM non-parity tin SIMMs (Joe Hamelin) All four units here have 64MB. A stock 16MB unit needs more RAM for NetBSD 11
OS install proof-of-concept DONE - Mike Wallette (FreeBSD 4, 2005), Matt Schumacher (2005) (Linux) FreeBSD 10.x was the last to support 486 in 64MB of RAM; consider NetBSD instead; Linux would have to be custom
FreeBSD install DONE - instructions. Use freebsd-update to patch (Royce) Outdated - see above
FreeBSD custom kernel DONE but not recommended ('make buildkernel' takes ~3.5 hours).
Use device.hints on 5.x/6.x (see sample diff).
Outdated - see above
FreeBSD 5.x/6.x install ON HOLD - use freebsd-update, but there is a boot problem with 5.x/6.x
and a kernel panic that was fixed here.
Recommendation: none at this time (Royce)
EXPLAINED - the BIOS undercounts memory at some power-ons and FreeBSD cannot be told otherwise. 5.x and 6.0 load only after a warm reboot. Recommendation: 4.11 (untried)
console on COM1 DONE - enable ttyd0 in /etc/ttys; echo -P > /boot.config; reboot  ?
keyboard DONE - works on mboard connector J7; $10 to build one (Joe Hamelin)  ?
video DONE - 16-bit cards work fine in generic VGA mode (Wallette) An ISA VGA card can stop a WD80x3 card netbooting
network DONE - Original hub works as ed0/NE2000; also 3C509, Intel Pro The netboot ROM finds only one card type; two ROM versions exist. See Hardware
LCD support In progress - 57600bps COM2 (Joe) - perl script (Royce) DONE - mapped: control map. Never send ESC W: it arms a reset watchdog
modem Not started - suspect sio2/COM3 at IRQ5 FOUND - sio2 is the modem's UART; FreeBSD disables it by default. Answers AT
CD-ROM DONE - works as slave, but BIOS doesn't support booting (Joe)  
sound support In progress - VOXWARE sb0 works on 4.x; no pcm yet; suspect IRQ7 per original config IRQ7 confirmed by Whistle's own kernel. The card was in one unit of four
power supply DONE - get the PSA-30U-120 (mirror) power supply and a Tumbler 3271V86SD cord. (Royce)  
battery DONE - order Interstate SLA1005 (12V 1.3 Ah SLA) (Cliff Erickson) Original cell is a Panasonic LC-R121R3PU, now discontinued
NetBSD 11   DONE - see NetBSD (Royce)
current FreeBSD   No - 96MB minimum; the BIOS reports 64MB at most. Last likely is FreeBSD 10.4
OpenBSD 7.x   No - wants a Pentium
Linux   Hand-built only: Debian needs i686. LILO fails on this BIOS; SYSLINUX works
WhistleWare   3.0.3, 3.2.1p8, and 3.2.1p16 recovered from original drives (contact me if you have others!)
WhistleWare II (4.x)   Has run: a 4.2p2 dmesg (Julian Elischer). Not tested here; no Digi ISDN driver

Part InterJet II (2200) InterJet by contrast)
CPU Cyrix MediaGX, 233 MHz; no CPUID Cyrix 486DX4
RAM 32MB, one 168-pin SDRAM DIMM socket. The BIOS counts it correctly SIMMs; the BIOS can miscount
chipset Cyrix Cx5530, PCI ALi M1489, ISA
BIOS Same Embedded BIOS 3.1 build as the I  
network Two Intel 82558 10/100 on PCI NE2000 hub or WD80x3 cards
disk Cx5530 UDMA33. DMA to a buffer not aligned to 16 bytes hangs the bus IDE, CHS only
video In the Cx5530, with no connector on the back only w/3rd-party ISA card
USB Two ports none
serial ports COM1 (DB9 console), COM2 (front panel), COM3 same
front panel Same codes as the I  
netboot ROM Etherboot 4.1pre9, TFTP, ELF BOOTP/NFS, a.out
reset None in software: halt, then keypad 2-5-8 or the rocker switch reboot works
battery, speaker Neither both
power IEC C8 inlet; takes a non-polarized C7 cord. 2-5-8 cuts power at once external supply
audio Cx5530 XpressAUDIO SoundBlaster on the mainboard (ESS ES488F)

Task Status
NetBSD 11.0/i386 DONE - multiuser, from disk and netbooted (Royce)
kernel DONE - INTERJET2_32M, from GENERIC: disk, network and video are all PCI. No REALEXTMEM. Never boot an InterJet kernel on an InterJet II, or the reverse
console DONE - the DB9 at 9600; connect before power-on, as there is no video out
disk DONE - nothing to set: NetBSD drops to PIO for any unaligned transfer
netboot DONE - the ROM loads a kernel only after it is rewritten into one flat layout; a stock kernel does not survive it
front panel DONE - lcdd runs
reboot None: shutdown -h now, then 2-5-8
USB DONE - works
audio Not started - no driver attaches
root will not mount Same as the I: disklabel must show partition a

Task Status
FreeBSD 7.0 DONE - GENERIC, 2008 (dmesg), with DMA turned off by hand
FreeBSD 10.x Not started - the last i386 branch under 64MB. GENERIC is 18.3MB against 64MB of RAM, and would need to be customized
OpenBSD Not started - wants a Pentium; the MediaGX might pass
Linux Hand-built only: Debian and its derivatives need i686

We also have some dmesgs.

Back to top



Appliance projects

Project Status
NetBSD appliance core in progress (Royce)
NetBSD firewall waiting for a volunteer
CallAttendant port in progress, but no voice support in modem, so features will be stripped (Royce)
(superseded) Linux firewall DONE (2005) - SchuBox Linux by Matt Schumacher
jukebox paused - recommend audio/mpg123 NetBSD package
OpenBSD install (superseded) Good writeup by Nick Holland (2004, modern OpenBSD no longer feasible, but still informative) (local copy)

Interested in a project not listed? Let us know!


Other stuff

Public software components - the original list, and useful add-ons for hacking.

Whistle Folks - the rockin' people who brought you the original InterJet.

The InterJet in Japan -- more info needed.

Key Reddit thread -- the Dutch Whistler's 2020 retrospective

Fun with Your Whistle!

Working with the original system software:

References and Resources

Mailing list: (pretty low traffic right now) Send an email to whistlejet-request@nethead.org with "subscribe" in the SUBJECT. (dormant)

Back to top


Whistle while you work! Select:
royce's pages | ACS Internet | feedback

INTERESTING FACT: Fox40 Whistle is the largest manufacturer of whistles in the world.