For a given device, sometimes one linux distro perfectly supports a hardware component. Then if I switch distros, the same component no longer functions at all, or is very buggy.

How do I find out what the difference is?

  • bloodfart@lemmy.ml
    link
    fedilink
    arrow-up
    23
    ·
    3 months ago

    How to fix shit that doesn’t work:

    Use lspci/lsusb and lsmod to show you what devices are attached to the computer and what kernel modules are loaded presently.

    Use the modinfo command to show information about kernel modules.

    Use ls /lib/modules/kernel_version/drivers to see what modules are available.

    Use your distributions package manager to install more optional modules.

    How to figure out if something will work:

    Use lspci/lsusb, look for those components and their kernel modules, see if they’re available in the distribution you’re investigating.

    To give an example: I use an hp stream 11 for some stuff. It’s a little laptop with a relatively obscure Broadcom wireless card. Rhel removes support for old and unpopular hardware pretty frequently and doesn’t support that network card. To get it working on that little pc I ended up building the module from source (available in the el9 third party repositories) and doing Broadcom-wl manually every time the kernel updates. If I didn’t want to keep my wits about me, I’d make a script to run when uhh yum? upgrades the kernel to run a reinstall of the driver.

  • Eugenia@lemmy.ml
    link
    fedilink
    English
    arrow-up
    14
    ·
    3 months ago

    Three things:

    1. The kernel version they got. I have had hardware that didn’t work in one distro but it did on another, but their difference really was that one had kernel 5.11 and then other one 6.5. Big difference in terms of support.

    2. Might not be a matter of driver, but a matter of firmware. If a distro allows the download/usage of third party non-free firmware code or not, a lot more hardware is supported. Not all distros do that.

    3. If it’s ubuntu or ubuntu-based. Ubuntu has incorporated a lot of additional drivers/firmwares/support in their kernel versions than most others.

  • mumblerfish@lemmy.world
    link
    fedilink
    arrow-up
    7
    ·
    3 months ago

    A lot of the answers here are mentioning the kernel. The version of it and what not. Look, the distro compiles the kernel for you, they are not gonna support literally everything but they have to make a choice. That choice is stored in the “kernel config”. If you have one distro working and another one not, compare the two configs. It’s gonna take a lot of work to parse through, there are many config settings. But where do you start to look? Most distros have their config published in two places: /boot/config-<kernel version>, for any installed kernel, or /proc/config.gz (cat /proc/config.gz | gunzip to read), for your running kernel. Get the two files from the distros, compare, find what seems relevant, make the changes (I only know how to do this in gentoo), and test.

    • linuxPIPEpower@discuss.tchncs.deOP
      link
      fedilink
      arrow-up
      4
      ·
      3 months ago

      But where do you start to look? Most distros have their config published in two places: /boot/config-<kernel version>, for any installed kernel, or /proc/config.gz (cat /proc/config.gz | gunzip to read), for your running kernel.

      Thanks for understanding the question and providing a concrete answer of a place to look! I will do this. :)

  • Katlah@lemmy.dbzer0.com
    link
    fedilink
    English
    arrow-up
    6
    arrow-down
    2
    ·
    3 months ago

    I feel like 99% of the time it’s just “does this distro have drivers for this hardware”. If yes it works, if no it doesn’t.

  • Quantum Cog@lemmy.world
    link
    fedilink
    arrow-up
    2
    ·
    edit-2
    3 months ago

    Could be varoius reasons. Some common ones:

    • distros can have different kernel parameters
    • unloaded kernel modules
    • different kernel parameters
    • older kernel/packages
    • missing packages

    You can narrow down which distros work and which hardware support is missing. Also look at archwiki for that specific piece of hardware. You can find a lot of useful information even if you don’t use Arch.

    • linuxPIPEpower@discuss.tchncs.deOP
      link
      fedilink
      arrow-up
      2
      arrow-down
      1
      ·
      edit-2
      3 months ago
      • distros can have different kernel parameters

      • unloaded kernel modules

      • different kernel parameters

      • older kernel/packages

      • missing packages

      how do I find out about these?

      Are they specific to my system? Some kind of decision the installer makes? So I would investigate locally on the device?

      Or will it be a general distro thing? Am I looking on their website to find out?

      • Quantum Cog@lemmy.world
        link
        fedilink
        arrow-up
        3
        ·
        3 months ago

        No, look up what drivers/modules/packages your hardware need and load them/upgrade/install on the buggy distro

  • LeFantome@programming.dev
    link
    fedilink
    arrow-up
    2
    ·
    3 months ago

    I find Arch based distros have pretty solid hardware coverage. Lots of older hardware support baked in, plus newer kernels ( newer drivers ), and up-to-date device firmware.

    The older the kernel, the less hardware is supported ( generally ). That is going to be a big reason for the disparity between distros. But device firmware makes a difference, especially for distros that do not support non-free binaries. Debian has gotten a lot better since they changed that policy for example.

    The more desktop centric a distro is, the more likely they are to bundle a broad selection of hardware drivers.