I apologize if this seems like a trivial matter, but I have a laptop (a Lenovo Ideapad 3 to be exact) and I can’t get WiFi (or Bluetooth) to work on anything other than Ubuntu 23.04 and its flavors. I tried OpenSUSE Leap and Debian 12, both couldn’t detect the built-in WiFi card. I also tried Ubuntu-based distros such as Linux Mint, KDE Neon, and Zorin OS, same problem. I tried Kubuntu 22.04 LTS and even that couldn’t detect the WiFi card! So for the mean time, I’m stuck with using Ubuntu 23.04. Any ideas to get around this? Can I use Ubuntu to figure the exact WiFi card that’s being used then download its driver? If so, how can I do that exactly? Note that my Laptop doesn’t have a built-in Ethernet port, and I don’t want to buy a USB Ethernet adapter only for it not work out of the box either! Any help would be appreciated!

  •  noddy   ( @noddy@beehaw.org ) 
    link
    fedilink
    English
    711 months ago

    Drivers are usually there in the kernel and usually works out of the box. You shouldn’t need to manually install drivers with linux generally (except for proprietary drivers cough nvidia cough). But if your laptop is quite new, you need to have a new enough kernel. That would explain why ubuntu 23.04 works but not not 22.04. The kernel in 22.04 is probably too old to have the drivers for your network interface. Check what kernel version is shipped with ubuntu 23.04 and make sure that whatever distro you try have at least that version. Stable LTS distros often don’t work on brand new hardware.

    • I understand that. But what’s making me scratch my head is that I tried running Linux Mint 21.2 and Debian 12, both of which to my knowledge were released very recently, and yet both failed to detect my WiFi card. Are they running an older linux kernel?

  • If you wish to run Ubuntu 22.04 you should be able to upgrade to kernel 6.2 (by default its on 5.14 IIRC).

    https://www.omgubuntu.co.uk/2023/08/ubuntu-22-04-linux-kernel-6-2

    I’m not sure if this is known to you; apologies in advance if I’m stating the bleeding obvious: In Linux drivers come with the kernel. There shouldn’t be any reason, except a few exceptions, to install drivers separately to your kernel. So when Linux folks talk about “the kernel”, they mean “the scheduler, core operating system AND all up-to-date drivers”.

    So most likely your HW isn’t supported in older kernels.

    When I first installed 22.04 LTS for a 12700T-based micro server, several things didn’t work out of the box. After upgrading to 5.19 everything was in working order though.

  • You’re probably just missing the corresponding firmware package.

    lspci -v should show you which hardware chips your system has. Then just search the packages for any firmware packages that contain that chip’s name. E.g. realtek.

  • You could also check the symlinks for the device in the sysfs. The word after “drivers” below for a given network interface (eth0 below) is usually the name of the driver (cpsw below):

    $ ls -l /sys/class/net/eth0/device/driver   
    lrwxrwxrwx 1 root root 0 Aug  9 10:41 /sys/class/net/eth0/device/driver -> ../../../../bus/platform/drivers/cpsw
    

    Or run lsmod and see if anything jumps out.

    Either way, once you find the driver name, run modinfo to get version and other information about specific drivers.

    Edit: formatting