--- title: "Switching Between Speakers and Headphones on FreeBSD" category: bsd abstract: How to change the audio device? date: 2023-03-16T22:52:01+01:00 year: 2023 draft: false tags: - FreeBSD - headphones - speakers - ThinkPad - audio - tutorial --- I want my laptop to switch to wired headphones when I attach them. FreeBSD has its own [Sound System](https://wiki.freebsd.org/Sound), so it's a great learning experience. I have yet to automate it (it is possible, but an attempt to do so forced me to do a complete rollback of the system state), but for now, this is working. First, check which audio outputs your device supports: ``` $ cat /dev/sndstat ``` In the case of my ThinkPad, this returns ``` Installed devices: pcm0: (play) pcm1: (play) pcm2: (play) pcm3: (play/rec) default pcm4: (play) No devices installed from userspace. ``` The ones I care about are: pcm3 - the speakers pcm4 - the headphone jack I can now easily switch between them: ``` # enable speakers $ sysctl hw.snd.default_unit=3 # enable headphones $ sysctl hw.snd.default_unit=4 ``` (replace the value with the correct id from `sndstat` file.) This, however, comes with a huge caveat. Some apps (khem khem, Firefox) not native to FreeBSD come configured with PulseAudio instead of FreeBSD's Sound System. This creates a level of indirection, and changing system output may not work instantly. In the case of Firefox, I need to reload the tab. Some apps, as I've heard, require a restart.