So, after I met problems with iwlwifi driver and my attempts to aggregate both em0 and wlan0 interfaces to the one lagg0 interface (https://mastodon.bsd.cafe/@evgandr/115985853500057386) — looks like I found a much (MUCH!) simpler solution 

I wanted to automatically switch between wired and wireless networks when I plug-in (or disconnect) my Ethernet cable. First, because I was a newbie in the FreeBSD world, I tried to search for some kind of NetworkManager. Thankfully, I didn't find any NetworkManager clone ported to the FreeBSD. I found some tries to port NetworkManager from Linux to FreeBSD but all of them are failed (not surprised, lol).

Then, I finally started to read documentation  . In the section about advanced networking I read about aggregation interfaces. And somehow I managed to aggregate both of em0 and wlan0 to the one lagg0 interface and it works well.

But, looks like (see https://mstdn.social/@erikarn/115986265106931691) it is not the way how the lagg interfaces should work. It is not intended to use wireless interfaces in the aggregate interfaces — so my tricky setup stopped working in the FreeBSD 15.0.

BUT, since we have a beautiful devd daemon, which listens for various system events and able to execute actions when event is happened — I just wrote 23 lines of shell script to learn my laptop how to switch between interfaces when the Ethernet cable (dis)connects, lol. Solution is very simple:

First, we already have /etc/devd/dhclient.conf, which starts dhclient when some interface appeared in the system. I modified it, so it calls the sPeCiAL script, each time when em0, or wlan0, or ue0 interface appeared in the system, or when em0 is disappeared:

notify 0 {
match "system" "IFNET";
match "type" "LINK_UP";
media-type "ethernet";
action "/root/bin/unfuck_network.tcsh $subsystem ifup";
};

notify 0 {
match "system" "IFNET";
match "type" "LINK_DOWN";
media-type "ethernet";
action "/root/bin/unfuck_network.tcsh $subsystem ifdown";
};

notify 0 {
match "system" "IFNET";
match "type" "LINK_UP";
media-type "802.11";
action "/root/bin/unfuck_network.tcsh $subsystem";
};

notify 0 {
match "system" "ETHERNET";
match "type" "IFATTACH";
match "subsystem" "ue0";
action "/root/bin/unfuck_network.tcsh ue0";
};

Then, the main magic happens in the /root/bin/unfuck_network.tcsh:
— When Ethernet cable is connected — it destroys the wlan0 interface and starts dhclient for em0 to talk with DHCP server.
— When Ethernet cable is disconnected — it makes all to remove route using em0 from routing table (removes em0 interface completely, flush routing table, etc — somehow em0 still stays in the routing table if interface is not destroyed; btw system will create it anyway later, in some point) and recreates the wlan0 interface.
— When wlan0 device is created — it starts dhclient for it.

Script contents (for tcsh):
#!/bin/tcsh

switch ( $1 )
case "em0":
if ( $2 == "ifup" ) then
service netif quietstop wlan0
service dhclient quietstart em0
else if ( $2 == "ifdown" ) then
service dhclient quietstop em0
ifconfig em0 delete
route flush
service routing restart
service netif quietstart wlan0
endif
breaksw;
case "wlan0":
service dhclient quietstart wlan0
breaksw;
case "ue0":
service dhclient quietstart ue0
breaksw;
endsw

#FreeBSD #FreeBSD150RELEASE #wifi #tcsh #devd #iwm

Eugene :freebsd: :emacslogo: (@evgandr@bsd.cafe)

Attached: 1 image Huh, looks like I hurried to sign praises for iwlwifi in the FreeBSD 15.0 :drgn_sigh: With wlan0 (Intel Dual Band Wireless-AC 8260) added to the aggregate interface lagg0, I receive "general protection fault while in kernel mode" if laptop booted with connected Ethernet cable, or if I connect the cable after the system boot. #FreeBSD #FreeBSD150RELEASE #iwlwifi

BSD.cafe Mastodon Portal

Huh, looks like I hurried to sign praises for iwlwifi in the FreeBSD 15.0  With wlan0 (Intel Dual Band Wireless-AC 8260) added to the aggregate interface lagg0, I receive "general protection fault while in kernel mode" if laptop booted with connected Ethernet cable, or if I connect the cable after the system boot.

#FreeBSD #FreeBSD150RELEASE #iwlwifi

Damn, FreeBSD 15.0 is so effective that it is using -1% of swap!  

#FreeBSD #FreeBSD150RELEASE

Okay, after "pkg upgrade" I got my graphical drivers and Xorg back!  

Sound works, GUI works.

I was using the iwm driver for my Intel AC 8260 — and after update it stopped initialize and wlan0 interface couldn't be added to the my aggregate interface lagg0.

Before, I was using iwm driver, not the iwlwifi, because the second could not be added to the lagg0 (it showed some cryptic error about SIOC80211). But after update tables turned — and my WiFi interface could be added to the aggregate interface with iwlwifi driver.

Couldn't say that WiFi speeds dramatically changed in comparison with 14.3 — I see the same numbers as before in my experiments with iwlwifi in 14.3.

Sadly, the problem with waking up laptop still exists — most of the times it works, but sometimes the CPU fan starts to spin for a second and after some time system powering off with message "CPU temperature is too high, shutting down" in the console  Possibly, something in my system is misconfigured and overloads the CPU after wake up.

#FreeBSD #FreeBSD150RELEASE

Ugh, "pkg upgrade" says that I should download 10 GB of updates for packages  

Where is my Ethernet cable?! 

#FreeBSD #FreeBSD150RELEASE

Okay, folks — I've updated to the #FreeBSD 15.0 on my #Thinkpad X220  

The process itself completed without any problems — I used freebsd-update as usual. After first reboot (kernel updated, userspace not updated) I met the strange blinking of display, while the second "freebsd-update install" was running in the text console. But after update was fully completed, this "problem" was gone.

After update, i915kms refused to load, system says that it is already loaded or compiled into the kernel. So, there are no graphical interface (possibly I should run "pkg update" or install drm-kmods from FreeBSD-kmods repository  )

And there are no networking with iwm and Intel AC 8260 (possibly, it's time to finally switch to iwlwifi, lol)

#FreeBSD #FreeBSD150RELEASE

What's better, *BSD or Linux?

PeerTube