september 2020
august 2020
may 2020

OpenBSD on the Microsoft Surface Go 2

posted on may 15th, 2020 with tags laptops, and openbsd, and last updated on jul 31st, 2020

I used OpenBSD on the original Surface Go back in 2018 and many things worked with the big exception of the internal Atheros WiFi. This meant I had to keep it tethered to a USB-C dock for Ethernet or use a small USB-A WiFi dongle plugged into a less-than-small USB-A-to-USB-C adapter.

Microsoft has switched to Intel WiFi chips on their recent Surface devices, making the Surface Go 2 slightly more compatible with OpenBSD.

Continue reading 2,098 words...

march 2020

A USB Loader for the Cidco MailStation

posted on mar 31st, 2020 with tags hardware, mailstation, and z80

Last year I wrote about the Cidco MailStation and how I was using it as a Z80 development platform. One of the biggest hurdles to running code on them is that it must be uploaded over the MailStation’s parallel port with a LapLink cable and some custom software (although it’s certainly easier than having to pull and flash a chip).

I recently created a USB data loader device that allows for easier development from a modern computer and implements the MailStation’s custom data encoding routines in its firmware.

Continue reading 926 words...

december 2019

Arduino Development on OpenBSD

posted on dec 17th, 2019 with tags arduino, hardware, and openbsd

Back in 2017, I bought an Arduboy, a fun little Arduino development system which integrates an ATmega32U4 8-bit CPU, 32Kb of flash storage, 2Kb of RAM, a 128x64 pixel OLED display, some buttons, a speaker, and a battery in a Gameboy-like package.

OpenBSD had an old Arduino package available without the Arduino IDE, and it instead included a custom Makefile for end-users to build off of for compiling projects. But it was all pretty old and crufty and kind of sucked the fun out of tinkering with a new piece of hardware.

Continue reading 752 words...

august 2019
july 2019

Touchpad, Interrupted

posted on jul 28th, 2019 with tags debugging, laptops, and openbsd

For two years I’ve been driving myself crazy trying to figure out the source of a driver problem on OpenBSD: interrupts never arrived for certain touchpad devices. A couple weeks ago, I put out a public plea asking for help in case any non-OpenBSD developers recognized the problem, but while debugging an unrelated issue over the weekend, I finally solved it.

It’s been a long journey and it’s a technical tale, but here it is.

Continue reading 2,901 words...

may 2019

CVE-2019-8575: Apple AirPort Firmware Data Deletion Vulnerability

posted on may 30th, 2019 with tags apple, networking, and security

On July 4th, 2018, I reported a security/privacy problem to Apple regarding the firmware on its now-discontinued AirPort wireless access points.

Per Apple’s website, a “factory-default reset” of an AirPort should “remove any saved configurations and profiles” and should be sufficient for “selling or giving away your base station”.

On at least AirPort Extreme AP firmware 7.7.9 and AirPort Express firmware 7.6.9 (the newest available for each device at the time of reporting), a “factory-default” reset just moves the configuration file to a new location on the device, and the old file and up to two additional previous configurations remain accessible on the device.

Continue reading 1,284 words...

Cidco MailStation as a Z80 Development Platform

posted on may 3rd, 2019 with tags hardware, retrocomputing, and z80, and last updated on mar 31st, 2020

The Cidco MailStation is a series of dedicated e-mail terminals sold in the 2000s as simple, standalone devices for people to use to send and receive e-mail over dialup modem. While their POP3 e-mail functionality is of little use today, the hardware is a neat Z80 development platform that integrates a 320x128 LCD, full QWERTY keyboard, and an internal modem.

After purchasing one (ok, four) on eBay some months ago, I’ve learned enough about the platform to write my own software that allows it to be a terminal for accessing BBSes via its modem or as a terminal for a Unix machine connected over parallel cable.

Continue reading 2,409 words...

march 2019

Using an OpenBSD Router with AT&T U-Verse

posted on mar 21st, 2019 with tags networking, and openbsd

I upgraded to AT&T’s U-verse Gigabit internet service in 2017 and it came with an Arris BGW-210 as the WiFi AP and router. The BGW-210 is not a terrible device, but I already had my own Airport Extreme APs wired throughout my house and an OpenBSD router configured with various things, so I had no use for this device. It’s also a potentially-insecure device that I can’t upgrade or fully disable remote control over.

Fully removing the BGW-210 is not possible as we’ll see later, but it is possible to remove it from the routing path. This is how I did it with OpenBSD.

Continue reading 1,781 words...

november 2018

OpenBSD in Stereo with Linux VFIO

posted on nov 12th, 2018 with tags debugging, laptops, linux, and openbsd, and last updated on mar 24th, 2019

I use a Huawei Matebook X as my primary OpenBSD laptop and one aspect of its hardware support has always been lacking: audio never played out of the right-side speaker. The speaker did actually work, but only in Windows and only after the Realtek Dolby Atmos audio driver from Huawei was installed. Under OpenBSD and Linux, and even Windows with the default Intel sound driver, audio only ever played out of the left speaker.

Now, after some extensive reverse engineering and debugging with the help of VFIO on Linux, I finally have audio playing out of both speakers on OpenBSD.

Continue reading 2,062 words...

august 2018

OpenBSD on the Microsoft Surface Go

posted on aug 31st, 2018 with tags laptops, and openbsd

For some reason I like small laptops and the constraints they place on me (as long as they’re still usable). I used a Dell Mini 9 for a long time back in the netbook days and was recently using an 11” MacBook Air as my primary development machine for many years. Recently Microsoft announced a smaller, cheaper version of its Surface tablets called Surface Go which piqued my interest.

Continue reading 3,539 words...

july 2018
june 2018

Fetching Node Status from AirPort APs

posted on jun 12th, 2018 with tags apple, networking, netbsd, and ruby

Seven years ago, I hacked together some code to update my Ecobee WiFi thermostat temperature depending on whether I was home. While my newer Ecobee thermostat has room occupancy sensors that make this tracking automatic, back then I had to poll my WiFi access point through SNMP to look for my phone’s MAC address in its table of associated clients.

Recently I needed to do something similar to pass to my Z-Wave controller but it seems that Apple has removed SNMP support from its Airport Extreme firmware some time ago.

Continue reading 599 words...

march 2018

Dolch PAC 64

posted on mar 20th, 2018 with tags hardware, and retrocomputing

The Dolch PAC 64 is a portable, rugged Pentium-powered PC from the mid 1990s. It was usually used (and can usually be found on eBay) as a “portable network sniffer” complete with multiple network cards supporting multiple media types.

Continue reading 1,245 words...