Hacker News new | ask | show | jobs
by skydhash 20 days ago
The Bluetooth spec is horrendous, and from what I read, the hardware is equally horrifying. Bluettoth is a wireless bus, not one class a device and an implementation would need to provide hooks to the other subsystems like wscons (keyboard and mouse), audio and network. OpenBSD does not have kernel modules, so it’s either in or not.
1 comments

> The Bluetooth spec is horrendous

The Bluetooth Classic spec is indeed fairly awful, but the Bluetooth LE spec is not too bad. Plus, the entire specification is available free-of-charge, without even needing to register an account.

Bluetooth LE used to be limited to tiny accessories, but these days it supports nearly everything—I've completely disabled Bluetooth Classic on my (Linux) laptop because of how much of a disaster it is, but I'm still able to use my mouse and headphones over LE only.

> OpenBSD does not have kernel modules, so it’s either in or not.

But I'm assuming that not all kernel code is active at all times? Because it would seem odd to me if the amdgpu code was always active on something like a Raspberry Pi.

There’s a config[0] mechanism, both static and runtime that tells what gets enabled. In static mode, it tells what’s get compiled in the kernel, while you can disable any drivers (and save your config as a modified kernel) in a compiled one.

It mostly a drivers tree that describe how to probe for hadrware. Like mainbus -> pci -> xhci -> usb -> uaudio -> audio.

[0] https://man.openbsd.org/config.8

Depends on what you mean by active. The kernel has the code in the binary, but on boot it goes through device discovery and initialization, so it doesn't initialize or run drivers for things that aren't present.

There are also architecture specific builds, so the aarch64 build won't include driver code at all for devices that are specific to x86.