FreeBSD on the Framework Laptop

I’m rocking 14-STABLE with KDE on the FW16! I couldn’t get the AR9462 card to work with the existing device timeout bug since 12/24.

I have a small bluetooth dongle that I wart off the USB2.0 slot for my bluetooth audio to my speakers/headphones, so I have my music at least (=

I’m sticking FreeBSD on the FW16 as my daily, I’m so so over Linux I’ll take these growing pains; like I did with Solaris x86 on my laptop in the day haha.

You may be interested in this, as I just discovered it this morning myself. I plan to participate and help as much as I can.

Thanks for getting me started with getting FreeBSD on this machine!

https://wiki.freebsd.org/LaptopDesktopWorkingGroup

1 Like

Glad to hear that @William_Pool. Yea def. As long as I have hardware that can run enough stuff for me I’m willing to sacrifice a bunch of conveniences to have the system I want. Given the model I’m running is actually the same model the FreeBSD Foundation and some devs selected to implement support for, I know it will just get better. I also do have a small USB 2.0 Realtek wifi card that I wanna give another try.

The only real issue is decent WiFi. I can fudge the bluetooth audio for my needs. I’ve tried the Atheros AR9462 which only device timeouts repeatedly. The Intel AX210 works, just slower than molasses but stable on 2.4ghz. I’m going to attempt a Atheros QCNFA335 next with should also be supported. We’ll see if that works better. I don’t need wifi6 speeds or better, but least g/n. That’ll be here in a week or so. Only a $10 card!

Let me know how it goes, I may pick it up as well.

Going to add this here but let me know if we need a separate thread. I noticed a FreeBSD sticker on the Framework Desktop at minute 1:27 of a video uploaded by The Verge. Someone want to spill the tea? Is the Framework Desktop going to be the first framework machine that the FreeBSD foundation and Framework will work on to get fully supported? ;D

EDIT: The 2024 FreeBSD quarterly report that was recently released discusses the Framework and FreeBSD relationships a bit better. I’m very happy to hear this.

3 Likes

Great update! Thanks for sharing it!

For a long time, Framework Laptop Inc is friendly to the FreeBSD project in many aspects, including providing engineering samples to Foundation for testing and working on support.

I found the typo “Framework Laptop Inc” (of course, the correct one is “Framework Computer Inc”). I hope that someone will contact the people managing this article in FreeBSD.

1 Like

No go on the QCNFA335, it’s the normal M2 not the thin NGFF :confused: I think the two best supported at the moment will be: Intel with the VM pass through LinuxPKI driver (AX210 for example) or the Atheros AR9462 once they figure why the device is giving timeouts.

I have a FW16, so it maybe different than the FW13 for the card function. However, others have reported similar results on the AR9462 with this Bug 283293

I’m on the wireless and desktop FreeBSD mailing lists, and active development is going on and testing. I suspect end of Q1-2025 the Intel NGFF cards will likely have much better support.

The Intel AX210 is “stable” I haven’t crashed the box. The connection will drop at times, but a restart of netif will usually resolve it. No kernel panics. Just slow for any real data-copies, been okay with web/youtube though.

As for BlueTooth, if you’re interested in just sound I have a Sennheiser Consumer Audio BTD 600 Bluetooth® Dongle (smallest USB wart I could find) and referenced this article: FreeBSD Forums - Using Bluetooth audio devices (speaker, headphones, earbuds) with FreeBSD

That’s worked well for my Aftershox headphones as my bluetooth speaker I use.

We’re getting there! The FW13 should speed up though with the FreeBSD Foundation making it top laptop to get support on.

2 Likes

Hey all,

I finished updating and publishing my results for most of the hardware components and expansion cards that I own. The good news is that most of the equipment I have is supported. Another set of good news is that both the Ethernet (Expansion Card) and the Ethernet port on my Anker Hub seem to be performing well and I got 83 MiB/sec and 79 MiB/sec speeds transferring a 2.3 GB ISO over SAMBA/CIFS (using Thunar’s GVFS support). This is much better performance and stability compared to when I was using the same hardware on the 11th gen. This could either just be improvements to FreeBSD over time, and/or the AMD Mainboard just working better with all of the components. Not sure, but it’s definitely a good thing. Even the Camera and Microphone are both working.

@William_Pool Since I only need sound for the most part when it comes to Bluetooth, I decided to buy your recommended dongle. I’ll be receiving it in a few days and will play with it and my Sonos Ace. I’ll need to eventually retry the Intel AX210 on this machine and see what happens. I also have an older TP-Link Wifi dongle (IIRC it’s realtek based) which I want to retry.

I also subscribed to the FreeBSD-Desktop mailing list (in addition to my other FreeBSD mailing lists) and will be monitoring the Laptop and Desktop Working Group activity. I may attend sometimes depending on my availability. I would be happy to continue to share my experiences through there as well.

This message was recently sent by Alice Sowerby to the Desktop Mailing List. Folks may be interested: proj-laptop/monthly-updates/2025-01.md at main · FreeBSDFoundation/proj-laptop · GitHub

I’m definitely looking forward to the future of FreeBSD on this machine (and Framework Computers in general). I’m also looking forward to that iwx Intel Wifi driver port from OpenBSD/Haiku ;D.

I received the Sennheiser Consumer Audio BTD 600 and it’s working perfectly with my Sonos Ace on FreeBSD 14.2-RELEASE-p2. I just plugged it in, it was detected immediately and came up as pcm5, I used mixertui to set it as the default output device. Then I just put my Sonos Ace in pairing mode, Pressed and held the button on the BTD 600 for 3 seconds to put it into pairing mode. They found each other, and the rest is history. Thanks for the recommendation.

I was also able to re-test my TP-Link USB dongle that I had in storage for many years, and that also worked perfectly lol. I just plugged it in, I checked sysctl net.wlan.devices and I saw the rtwn0 device on the list (uses rtwn – Realtek IEEE 802.11n/ac wireless network driver driver). I then added my usual settings to /etc/rc.conf and /etc/wpa_supplicant.conf, did a service netif restart, and the TP-Link turned on and went green. It associated pretty quickly and the DHCP finished in maybe less than 30 seconds and I was up and running. The speeds aren’t the fastest but it definitely seems to be working stable right now and good enough for sitting around the house and writing, browsing the web, and youtube. If I need the speed boost, I’ll just plug it into my dock again so it uses Ethernet. A speed test gave me 10.66 Mbps down and 6.17 Mbps upload. From my Amazon purchase history, it seems this was the one I bought on Jan 28, 2021:

TP-Link USB WiFi Adapter for PC(TL-WN725N), N150 Wireless Network Adapter for Desktop - Nano Size WiFi Dongle for Windows 11/10/7/8/8.1/XP/ Mac OS 10.9-10.15 Linux Kernel 2.6.18-4.4.3, 2.4GHz Only

/etc/rc.conf entries for wifi:

wlans_rtwn0="wlan0"                                                             
ifconfig_wlan0="WPA DHCP"                                                       
create_args_wlan0="country US regdomain FCC"

and then I did wpa_passphrase YOUR_SSID "YOUR_PASSWORD" > /etc/wpa_supplicant.conf to set the WPA info.

ifconfig for wifi

wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
	options=0
	ether FF:FF:FF:FF:FF:FF (REDACTED)
	inet 192.168.1.156 netmask 0xffffff00 broadcast 192.168.1.255
	groups: wlan
	ssid MY_SSID channel 5 (2432 MHz 11g ht/20) bssid FF:FF:FF:FF:FF:FF (REDACTED)
	regdomain FCC country US authmode WPA2/802.11i privacy ON
	deftxkey UNDEF AES-CCM 3:128-bit txpower 30 bmiss 7 scanvalid 60
	protmode CTS ht20 ampdulimit 64k ampdudensity 4 shortgi -stbc -ldpc
	-uapsd wme roaming MANUAL
	parent interface: rtwn0
	media: IEEE 802.11 Wireless Ethernet MCS mode 11ng
	status: associated
	nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>

dmesg for BTD 600 (bluetooth)

ugen0.4: <vendor 0x0a12 product 0x4010> at usbus0
uhub6 on uhub0
uhub6: <vendor 0x0a12 product 0x4010, class 9/0, rev 2.00/20.87, addr 3> on usbus0
uhub6: 4 ports with 0 removable, bus powered
ugen0.5: <BTD 600 BTD 600> at usbus0
uhid0 on uhub6
uhid0: <BTD 600 BTD 600, class 0/0, rev 2.00/29.26, addr 4> on usbus0
uhid1 on uhub6
uhid1: <BTD 600 BTD 600, class 0/0, rev 2.00/29.26, addr 4> on usbus0
ubt1 on uhub0
ubt1: <MediaTek Inc. WirelessDevice, class 239/2, rev 2.10/1.00, addr 2> on usbus0
ubt1: ubt_attach:670: could not get two interfaces
device_attach: ubt1 attach returned 6
uaudio0 on uhub6
uaudio0: <BTD 600 BTD 600, class 0/0, rev 2.00/29.26, addr 4> on usbus0
uaudio0: Play[0]: 96000 Hz, 2 ch, 24-bit S-LE PCM format, 2x4ms buffer. (selected)
uaudio0: Play[0]: 48000 Hz, 2 ch, 24-bit S-LE PCM format, 2x4ms buffer.
uaudio0: Play[0]: 44100 Hz, 2 ch, 24-bit S-LE PCM format, 2x4ms buffer.
uaudio0: Record[0]: 32000 Hz, 1 ch, 16-bit S-LE PCM format, 2x4ms buffer. (selected)
uaudio0: Record[0]: 16000 Hz, 1 ch, 16-bit S-LE PCM format, 2x4ms buffer.
uaudio0: Record[0]: 8000 Hz, 1 ch, 16-bit S-LE PCM format, 2x4ms buffer.
uaudio0: No MIDI sequencer.
pcm5 on uaudio0
uaudio0: HID volume keys found.
ubt1 on uhub0
ubt1: <MediaTek Inc. WirelessDevice, class 239/2, rev 2.10/1.00, addr 2> on usbus0
ubt1: ubt_attach:670: could not get two interfaces
device_attach: ubt1 attach returned 6

PS: I have the Wifi dongle on the left side of my framework and the bluetooth on the right side, the wifi dongle has a constant green light, and the bluetooth has a constant purple light. I have to admit, it looks pretty cool even if it’s using two USB slots lol.

EDIT: The 2024 FreeBSD quarterly report that was recently released discusses the Framework and FreeBSD relationships a bit better. I’m very happy to hear this.

Always happy to collaborate :smiley:
Let’s make Framework the go to system for FreeBSD users.

1 Like

@Daniel_Schaefer Definitely :slight_smile:

@Everyone

I just finished publishing some new updates to the page. Since the last update I’ve switched from 14.2-RELEASE to 14-STABLE to better help with development and get a better look at the state of the branch and help prevent regressions. So far everything is still working fine. I also switched back to my Intel AX210 card and can confirm that it’s working fine as well and can connect to 2.4 and 5 ghz networks in my home. Lastly, I’ve also expanded the scope of my documentation on this laptop to start including typical things people would normally want. I’m currently using sway (wayland) so all of my instructions are from that perspective, and have added (or currently have) easy instructions for getting the following things to work (assuming you are using the same hardware as me):

  • Touchpad (Tapping / Scrolling / Right Click)
  • Volume and Brightness Management
  • Lid Control
  • Locking and Idle Management
  • Wifi
  • Bluetooth
  • Fingerprint Reader
  • GNOME Keyring Integration (Thunar/GVFS/SAMBA/CIFS) and ssh-agent

and even optimization settings for an easy and relatively basic poudriere setup, which can be found in the “Compiling ports via poudriere” section.

I hope this can help more folks out there get a nice, smooth, and minimalistic FreeBSD setup. Please customize to your taste!

FreeBSD on the Framework Laptop (AMD Ryzen 7 7840U w/ Radeon 780M Graphics)


1 Like

If you’re looking for optimization settings, IMO you should put:

CPUTYPE?=znver4

in your make.conf. Sometimes you’ll hit software that doesn’t work with znver4 optimizations so I have this in my make.conf that you can adjust for whatever packages you build. It disables CPU optimizations for gcc48, gcc10, binutils, etc. It uses x86-64-v4 for boost-libs, wl-screenrec, etc. And for the rest it uses znver4:

# Example from bottom of /usr/share/examples/etc/make.conf
.if ${.CURDIR:M*/devel/boost-libs*} || ${.CURDIR:M*/multimedia/wl-screenrec*} || ${.CURDIR:M*/www/firefox*} || ${.CURDIR:M*/devel/libclc*}
CPUTYPE?=x86-64-v4
.elif ${.CURDIR:N*/lang/gcc48*} && ${.CURDIR:N*/lang/gcc10*} && ${.CURDIR:N*/devel/binutils*} && ${.CURDIR:N*/devel/qt6-base*} && ${.CURDIR:N*/www/node20*}
CPUTYPE?=znver4
.endif

(Personally I have it in my /usr/local/etc/poudriere.d/<jailname>-<tree>-<setname>-make.conf since I have other builds for other CPUs)

I also enable x86-64-v4 optimization for go:

# CPU optimizations for go
.if ${.CURDIR:M*/lang/go*}
OPTIONS_UNSET+=V1
OPTIONS_SET+=V4
.endif
1 Like

Thanks for that @Tom1 , to clarify, I’m not looking for optimizations to make the application binaries run faster, but more about optimizing the build system so that there isn’t resource starvation for the CPU/Memory, causing heat, and for the system to start throttling the CPU, and memory swapping, while also allowing you to continue browsing the web and doing other basic activities while you wait for the system to finish building.

Btw please try the fingerprint reader.
I made that work last year: freebsd-on-framework/fingerprint-reader.md at main · FrameworkComputer/freebsd-on-framework · GitHub

2 Likes

Hey @Daniel_Schaefer,

I tried the fingerprint reader and everything worked fine :). I’ve updated my instructions to document how to get a basic fingerprint reader setup working. Thank you!

Awesome, thanks for confirming!
Great page by the way :smiley: I actually referred to it when first trying FreeBSD on our systems.

I see you tried SD and MicroSD cards. They should work.
I tried them and they did work.
Not that they have a power saving feature - when no card is plugged in, the controller is completely powered off and can’t be enumerated by the OS.

1 Like

oh sorry, I misread. You found the expansion cards working. But not the SD/uSD slots on your anker dock.

1 Like

For sleep, yes S3 is not supported on the AMD Ryzen 7040 and Intel Core Ultra. Intel and AMD are moving away from traditional S3.
Recent platforms only support s0ix/s2idle.

You can find the latest status of the FreeBSD implementation here: Implement S0ix low power states and s2idle · Issue #32 · FreeBSDFoundation/proj-laptop · GitHub
I have not tried any of these patches.

2 Likes

Thanks for that @Daniel_Schaefer. Yup that’s correct regarding the SD/Micro SD, they work fine for the framework expansion cards. Only the ones on my Anker dock don’t work but that is a separate thing I noted (given I usually use my computer docked through it but I unplug it sometimes as well :D).

And thanks for clarying the sleep situation. I’m looking forward to having sleep support eventually based on what I read from the recent FreeBSD quarterly reports.

I’m glad that my page was able to help you get a jump start into the state of Framework on FreeBSD :smiley:!