Bluetooth Audio on OpenBSD with the Creative BT-W3

posted on nov 18th, 2020 with tags openbsd, and last updated on mar 22nd, 2021

Fifteen years ago, NetBSD’s Bluetooth audio stack was imported into OpenBSD. From what I remember using it back then, it worked sufficiently well but its configuration was cumbersome. It supported Bluetooth HID keyboards and mice, audio, and serial devices. Six years ago, however, it was tedu'd due to conflicts with how it integrated into our kernel.

While we still have no Bluetooth support today, it is possible to play audio on Bluetooth headphones using a small hardware dongle.

creative bt-w3 plugged into laptop on desk

Continue reading 1,468 words...

Video: C Programming on System 6 - Adding a GUI to diff(1)

posted on nov 4th, 2020 with tags mac, openbsd, retrocomputing, and video
part of C Programming on System 6 series

In the previous episode I quickly ported OpenBSD’s diff(1) but there wasn’t any interface to select files or scroll through the output. I’ve since added a proper GUI with the ability to select files or folders, and in this episode I walk through the GUI and filesystem code and then add a proper Edit menu. I also make a formal release of the code and binary available for download.

Continue reading 192 words...

Video: C Programming on System 6 - Porting OpenBSD's diff(1)

posted on oct 28th, 2020 with tags mac, openbsd, retrocomputing, and video
part of C Programming on System 6 series

I’ve wanted a simple revision control system on my Mac since starting development of my IMAP client. Porting a large system like Git or even CVS would be overkill (and very slow), but maybe something small like OpenBSD’s RCS implementation would suffice. For now, just having a diff utility would be helpful so in this video I port the guts of OpenBSD’s diff(1) and show it generating a unified diff between revisions of a C file.

Continue reading 239 words...

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.

surface go on desk with keyboard attached

Continue reading 2,110 words...

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...

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...

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...

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...

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.

surface go with keyboard on desk

Continue reading 3,539 words...

Switching from 1Password to Bitwarden

posted on nov 17th, 2017 with tags firefox, openbsd, ruby, and security

I’ve been using an OpenBSD laptop as my workstation a lot more lately, probably because most of my hardware just works now and I don’t have to think too much about it. The touchpad works when I touch it, I can be confident that when I close the lid, the laptop will fully suspend and then fully resume again when I open it, WiFi works all throughout my house (although it’s not terribly fast), and my web browser is fast and stable. What amazing times we live in.

In the past, one thing that frequently kept me going back to my Mac, aside from iOS and Android development, was 1Password. I have a ton of logins for websites and servers, and because my browsers are all configured to clear cookies for most websites after I close their tabs, I need frequent access to passwords synced across my laptops and phones, and 1Password has great apps for all of those except OpenBSD.

Continue reading 1,533 words...

OpenBSD on the Lenovo ThinkPad X1 Carbon (5th Gen)

posted on sep 1st, 2017 with tags hardware, laptops, openbsd, and thinkpad, and last updated on sep 4th, 2017

ThinkPads have sort of a cult following among OpenBSD developers and users because the hardware is basic and well supported, and the keyboards are great to type on. While no stranger to ThinkPads myself, most of my OpenBSD laptops in recent years have been from various vendors with brand new hardware components that OpenBSD does not yet support. As satisfying as it is to write new kernel drivers or extend existing ones to make that hardware work, it usually leaves me with a laptop that doesn’t work very well for a period of months.

After exhausting efforts trying to debug the I2C touchpad interrupts on the Huawei MateBook X (and other 100-Series Intel chipset laptops), I decided to take a break and use something with better OpenBSD support out of the box: the fifth generation Lenovo ThinkPad X1 Carbon.

thinkpad x1 carbon running openbsd on desk

Continue reading 1,978 words...