[RPi2B] Invalid Key/WiFi issues with USB dongle

  • DHCP on LibreELEC 12.0.2 with connman (2.0) and iw (6.17) versions from master works.

    I had to patch some checksums and I've also pulled in iwd (for good measure) and nftables (marked as dependency of conman in master branch) along with a newer version libnftnl (needed by nftables). If anyone is interested, my I've pushed my changes to a separate branch in my fork.

    I'll (try to) test 12.0.2 kernel/drivers on master/nightly next.

  • LE 13 with the kernel from 12.0.2 works too, so it seems to be a kernel/driver issue.

    I have reset packages/devel/glibc/, packages/compress/xz/, packages/linux-drivers/, packages/linux/, distributions/LibreELEC/options and projects/RPi/devices/RPi2/linux/linux.arm.conf to the version from tag 12.0.2. I have also pushed these changes onto a branch too.

    So from what I can tell the issue seems to be caused by either

    1. Changes the LE project made between 12.0.2 and 12.2.1 to the (RPi2) kernel/drivers -- e.g. via (removal) of patches

    or

    2. Changes made upstream between kernel versions 6.6.70 (which LE 12.0.2 uses) and 6.12.56 (which LE 12.2.1 uses)

    As mentioned previously in this thread, LE has disabled the out-of-tree 8192CU drivers in the past. These would have been used for my chipset in the past (and seem to still be used under RaspberryPi OS).
    But those drivers were already disabled in 12.0.2 (and in 11.x too for that matter), so I don't think it's relevant here.

    Compared to 12.0.2, 12.2.1 further disabled RTL8192DU and RTL8812AU, but I would expect that this has no effect for my dongle, as these drivers are for different chipsets (at least based on their name).

    I'm not quite sure how to continue debugging at this point, perhaps someone has a good suggestion.

    I'll try disabling RTL8192DU and RTL8812AU on 12.0.2 next, to see if disabling them somehow causes the issue (again, i don't expect it too, but you never know).

    Edited once, last by GamerBene19 (February 13, 2026 at 5:40 PM).

  • So I've bit the bullet bisected commits that touched linux kernel, drivers and LibreELEC options between 12.0.2 and 12.2.1 with
    git bisect start '--' 'distributions/LibreELEC/options' 'packages/linux-drivers/' 'packages/linux'

    According to bisect, this is the first bad commit

    This is my bisect log

    1267bd8 and 5d1274f do not build (which is also mentioned in https://github.com/LibreELEC/LibreELEC.tv/pull/10247) so i skipped them.

    014e83d also did not compile at first due to a missing call_read_iter which is referenced in out-of-kernel driver RTL8192DU and was removed in kernel version 6.10. For my bisect I simply created this patch to get it compling.

    I have also opened a issue in the driver repo in case it is helpful to someone.

    Edited once, last by GamerBene19 (February 14, 2026 at 9:18 AM).

  • I'll try the different version of the rpi-kernel (rpi-6.{7,8,9,10,11}.y) next to narrow down when it breaks. Might be a few days until I report back though as I won't be home over the weekend.

  • I'll try the different version of the rpi-kernel (rpi-6.{7,8,9,10,11}.y) next to narrow down when it breaks. Might be a few days until I report back though as I won't be home over the weekend.

    I was able to test them before leaving.
    rpi-6.7.y (which uses 6.7.12) and rpi-6.8.y (which uses 6.8.12) work, rpi-6.9.y (which uses 6.9.12) breaks.

    For the exact config I used see the commits on this branch.

    I'll try to git bisect the relevant rpi kernel commits once I get back.

  • So I started bisecting between the two commits and need(ed) to test a merge base

    Code
    Bisecting: a merge base must be tested
    [e8f897f4afef0031fe618a8e94127a0934896aba] Linux 6.8

    Unfortunately the build for this commit fails with

    There was a similar issue in

    Rataplan626
    February 5, 2024 at 2:41 PM

    Rataplan626 do you remember what you did to solve it (to bisect successfully)?

  • So from what I was able to find out, the issue is that e8f897f4afef0031fe618a8e94127a0934896aba (which is a upstream linux commit) does not have the dts/overlay files the raspberry kernel has and that the LibreELEC build expects.

    I tried adding them, some changes to Makefiles and some files from include/... from the HEAD of 6.8.y (which builds successfully) via a patch and I god a building kernel, but when I flash the image, the disk LED flashes a few and then the Pi simply turns off (both LEDs off, no display output).

    Any advice on what would be a good way to find out which commit between 6.8.y and 6.9.y introduced my problem is appreciated.

  • Quick update: I was able to narrow the range down a bit to the (upstream) commits

    • 2ed7064934dda0766495eaaf6b26332eb63e7df8 (which is the first commit on 6.8.y that builds an LE image) issue does not appear with this commit
    • 03ff51a768fc34ebbe51ad1a60bd566fc672eb46 (which is the first commit on 6.9.y that builds an LE image) issue does appear with this commit

    I have also opened a issue in the raspberrypi linux kernel's GitHub repo: https://github.com/raspberrypi/linux/issues/7245

  • There was indeed an issue in the Linux kernel (which only occurred in combination with iwd). There is a patch (not by me) linked in my response on the GitHub Issue that resolves the DHCP issue.

    I am now back to finding out what causes the invalid-key issue. So far, what I was able to find out is that my dongle enters some kind of failure state after some time (have seen it happen after ~1.5h, but also only after ~18h). In that state the dongle does not seem to send out packets anymore.

    If I manually (try to) (re)connect to a wifi network dmesg output shows three tries and that the handshake timed out, iwd logs the authentication timeout and responds a failed connection attempt to connman which it interprets as it being an invalid key.

    Judging from a packet capture via Wireshark, when in the 'failed' state, it looks like the dongle is not actually sending out authentication requests.

    Unfortunately it's a little hard to diagnose this issue as
    1) I don't have a known good/bad state to compare/bisect
    2) It takes (potentially) a lot of time to replicate the issue
    3) I can't be certain it's actually gone if it has not happened after x hours/minutes

    I'm currently testing with wpa_supplicant. So far (~22h) it has not failed yet, which aligns with previous reports and with what chewitt mentioned about wpa_supplicant fixing the issue.

  • GamerBene19 it would be good to see connman debug + iwd debug logs during an invalid-key failure, and then the equivalent connman debug + wpa_supplicant debug during a successful connect, with both running on an LE13 master branch base. The goal would be to throw the logs into something like Claude AI with a prompt telling it to trace the interactions and find the root cause of the invalid-key failure. It may come up with a load of garbage. It might come up with something insightful. I've had some success with it tracing complex sequences of activities accross multiple binaries to find bugs in media codecs so you never know.