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, pleasecontact me!
It is vital that we document and preserve surviving hardware.
An InterJet and its mug (sold separately)WhistleWare after startup, with whistle logoThree InterJets booting NetBSD 11The IBM InterJet II, with netboot outputInside an InterJet. Mainboard plugs into a backplane below
2026-10-06: a photo gallery - units, screens,
and ephemera; WhistleWare 2.0.1p1 and 3.0.2 in
known software versions, from Hari Boukis's
1998 restore disk
2026-09-30: NetBSD 11 runs on the InterJet: status, kernel configs
and patches under NetBSD
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, pleasecontact me!
It is vital that we document and preserve surviving hardware.
How you can help - we need:
Hardware: entire units, or parts. Royce especially needs, for local testing: InterJet models 100, 140 (and 130 if any prototypes surface); InterJet II models 2220, 2230, 2250, 2300
Hardware knowledge: confirmation of existence of models, specifics of hardware options, and a registry (publishing optional) of known owners and which hardware they have)
Software: upgrade sets, and/or full-drive images, of the original WhistleWare software (we only have the versions marked available there; those marked missing or inferred are the ones most wanted. This is urgent -- the original IDE drives are ancient and dying, so any surviving copies need to be imaged carefully with ddrescue or equivalent). We especially need a full disk image from an InterJet II.
Testers: Volunteers to help test our upcoming bootable USB toolkit (hardware diagnostics, ROM dump, NetBSD netinstall, drive imaging (but don't wait -- image your drive now! contact me if you need assistance).
Ephemera: photos, brochures, marketing swag, printed manuals, original packaging, installation media ... (we know of two different mugs, a T-shirt, and an actual metal whistle that came in the InterJet box!)
Providers: which ISPs nd companies resold or supported InterJets, in what regions of the world?
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!)
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).
a front panel with a 20-character, 8-line LCD, a keypad ,and status
lights -- for setup and maintenance without a monitor
a built-in four-port Ethernet hub (on the 100 and 120) so the
office's PCs plugged straight into it
three comms options: 33.6Kbps modem, ISDN, or frame relay
an internal battery -- effectively an internal UPS, keeping the unit running for a while
when the power went out
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.
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 Enteronce 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
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
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
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)
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: 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
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)
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 twopatches (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"
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)
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