LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Slackware - ARM (https://www.linuxquestions.org/questions/slackware-arm-108/)
-   -   PRI4 revision a03111 bluetooth problems (https://www.linuxquestions.org/questions/slackware-arm-108/pri4-revision-a03111-bluetooth-problems-4175689561/)

louigi600 01-30-2021 12:35 PM

PRI4 and RPi0 bluetooth problems
 
I've can't seem to get bluetooth working on 2 different RPi4 revisions and on RPi0W. This is the version information from cpuinfo:

Code:

Hardware        : BCM2711
Revision        : a03111
Serial          : 1000000091328354
Model          : Raspberry Pi 4 Model B Rev 1.1


Hardware        : BCM2711
Revision        : b03114
Serial          : 100000009dc116e9
Model          : Raspberry Pi 4 Model B Rev 1.4

Hardware        : BCM2835
Revision        : 9000c1
Serial          : 000000009b4bd2c0
#this is a RPi0W

I'm running SlackwareARM 14.2 with an old 5.4.40 SARPIi4 current kernel on the RPi4 and later I discover the same problem also on RPi0W with 5.10.14 RARPi kernel.

I keep on getting this message in the kernel ring buffer:
Code:

brcmfmac mmc1:0001:1: Direct firmware load for brcm/brcmfmac43455-sdio.raspberrypi,4-model-b.txt failed with error -2
I've tried several firmware files from:
sarpi4-hacks-4.0-armv7l-1_slackcurrent_28Jan21_sp1.txz
borrowed from raspbian
https://github.com/RPi-Distro/firmwa...ee/master/brcm

None seem to work (all produce the same message in kernel ring buffer) and hciconfig shows no bluetooth device.
Wifi seems to be working fine but I wanted have the bluetooth working for testing for something I plan to do in the near future.

Has anyone got similar problems ?
Anyone know how to solve it ?

pchristy 01-30-2021 01:03 PM

I had similar problems with a Pi 400 (only partially fixed, even now) which I think uses a different chipset to the 4.

First of all, try installing the latest sarpi-hacks package, which has updated firmware for the bluetooth chips.

If that doesn't work, have a look at the modified bluez pkg detailed here: https://www.linuxquestions.org/quest...719/page5.html

At the time I found the patches for bluez, I was having problems compiling some things and sndwvs kindly provided a (64-bit!) package with the patches already applied in that thread.

BUT be warned! Try the sarpi-hacks first! There are (unconfirmed) reports that although the modified bluez package works with the 400, it might stop the 4 from working.

Mine now finds the bluetooth device and I can attach my headphones, but they drop out after a short, random time period, and the device vanishes again!

--
Pete

Emerson 01-30-2021 01:05 PM

Well, 'error -2' means it is not found at the time when kernel bluetooth driver is loading. Common problem for instance when the driver is built into kernel and the firmware is in /lib/firmware. When the kernel loads the drive with firmware is not mounted yet and you get error -2. In your case I assume the kernel driver is a module, not built into kernel? Then the firmware is not in correct location, the driver is looking into brcm subdirectory in your firmware directory, did you place it there? You may need to rename it to satisfy the driver.

louigi600 01-30-2021 01:39 PM

Quote:

Originally Posted by pchristy (Post 6213962)
I had similar problems with a Pi 400 (only partially fixed, even now) which I think uses a different chipset to the 4.

First of all, try installing the latest sarpi-hacks package, which has updated firmware for the bluetooth chips.

If that doesn't work, have a look at the modified bluez pkg detailed here: https://www.linuxquestions.org/quest...719/page5.html

At the time I found the patches for bluez, I was having problems compiling some things and sndwvs kindly provided a (64-bit!) package with the patches already applied in that thread.

BUT be warned! Try the sarpi-hacks first! There are (unconfirmed) reports that although the modified bluez package works with the 400, it might stop the 4 from working.

Mine now finds the bluetooth device and I can attach my headphones, but they drop out after a short, random time period, and the device vanishes again!

--
Pete

I've tried the latest sarpi hack ... sarpi4-hacks-4.0-armv7l-1_slackcurrent_28Jan21_sp1.txz built 2 days ago

Quote:

Well, 'error -2' means it is not found at the time when kernel bluetooth driver is loading. Common problem for instance when the driver is built into kernel and the firmware is in /lib/firmware. When the kernel loads the drive with firmware is not mounted yet and you get error -2. In your case I assume the kernel driver is a module, not built into kernel? Then the firmware is not in correct location, the driver is looking into brcm subdirectory in your firmware directory, did you place it there? You may need to rename it to satisfy the driver.
Nor sure but I think it is a module ... but the files are there in the right path /lib/firmware/brcm/
Code:

root@rpi4:~# ls -l /lib/firmware/brcm/
total 17580
-rw-r--r-- 1 root root  54734 Jan  1  2020 BCM-0bb4-0306.hcd
-rw-r--r-- 1 root root  36264 May  1  2019 BCM43430A1.hcd
-rw-r--r-- 1 root root  56759 May  1  2019 BCM4345C0.hcd
-rw-r--r-- 1 root root  269595 Apr  1  2018 bcm4329-fullmac-4.bin
-rw-r--r-- 1 root root  96224 Jan 30 17:49 bcm43xx-0.fw
-rw-r--r-- 1 root root  96224 Aug 17  2016 bcm43xx-0.fw-610.812
-rw-r--r-- 1 root root    180 Jan 30 17:49 bcm43xx_hdr-0.fw
-rw-r--r-- 1 root root    180 Aug 17  2016 bcm43xx_hdr-0.fw-610.812
-rw-r--r-- 1 root root  385067 Jan 30 17:49 brcmfmac43143-sdio.bin
-rw-r--r-- 1 root root  397312 Jan 30 17:49 brcmfmac43143.bin
-rw-r--r-- 1 root root  348160 Jan 30 17:49 brcmfmac43236b.bin
-rw-r--r-- 1 root root  455745 Jan 30 17:49 brcmfmac43241b0-sdio.bin
-rw-r--r-- 1 root root  403855 Jan 30 17:49 brcmfmac43241b4-sdio.bin
-rw-r--r-- 1 root root  408682 Jan 30 17:49 brcmfmac43241b5-sdio.bin
-rw-r--r-- 1 root root  479232 Jan 30 17:49 brcmfmac43242a.bin
-rw-r--r-- 1 root root  253748 Jan 30 17:49 brcmfmac4329-sdio.bin
-rw-r--r-- 1 root root    1509 Jan  1  2020 brcmfmac4330-sdio.Prowise-PT301.txt
-rw-r--r-- 1 root root  222126 Jan 30 17:49 brcmfmac4330-sdio.bin
-rw-r--r-- 1 root root  451566 Jan 30 17:49 brcmfmac4334-sdio.bin
-rw-r--r-- 1 root root  400864 Jan 30 17:49 brcmfmac43340-sdio.bin
-rw-r--r-- 1 root root    1693 Jan  1  2020 brcmfmac43340-sdio.meegopad-t08.txt
-rw-r--r-- 1 root root  569291 Jan 30 17:49 brcmfmac4335-sdio.bin
-rw-r--r-- 1 root root  202107 Jan 30 17:49 brcmfmac43362-sdio.bin
-rw-r--r-- 1 root root    803 Jan  1  2020 brcmfmac43362-sdio.cubietech,cubietruck.txt
-rw-r--r-- 1 root root    803 Jan  1  2020 brcmfmac43362-sdio.lemaker,bananapro.txt
-rw-r--r-- 1 root root  562183 Jan 30 17:49 brcmfmac4339-sdio.bin
-rw-r--r-- 1 root root    875 Jan  1  2020 brcmfmac43430-sdio.AP6212.txt
-rw-r--r-- 1 root root    928 Jan  1  2020 brcmfmac43430-sdio.Hampoo-D2D3_Vi8A1.txt
-rw-r--r-- 1 root root    831 Jan  1  2020 brcmfmac43430-sdio.MUR1DX.txt
-rw-r--r-- 1 root root  400447 Jan 30 17:49 brcmfmac43430-sdio.bin
-rw-r--r-- 1 root root    874 Jan  1  2020 brcmfmac43430-sdio.raspberrypi-rpi.txt
-rw-r--r-- 1 root root    1121 Jan 30 17:49 brcmfmac43430-sdio.txt
-rw-r--r-- 1 root root    989 Jan  1  2020 brcmfmac43430a0-sdio.ONDA-V80\ PLUS.txt
-rw-r--r-- 1 root root  382455 Jan 30 17:49 brcmfmac43430a0-sdio.bin
-rw-r--r-- 1 root root    951 Jan  1  2020 brcmfmac43430a0-sdio.jumper-ezpad-mini3.txt
-rw-r--r-- 1 root root  631467 Jan 30 19:14 brcmfmac43455-sdio.bin
-rw-r--r-- 1 root root    7163 Jan 30 19:14 brcmfmac43455-sdio.clm_blob
-rw-r--r-- 1 root root    2074 Jan 30 19:15 brcmfmac43455-sdio.txt
-rw-r--r-- 1 root root  495898 Jan 30 17:49 brcmfmac43456-sdio.bin
-rw-r--r-- 1 root root  10855 Jan 30 17:49 brcmfmac43456-sdio.clm_blob
-rw-r--r-- 1 root root    2053 Jan 30 17:49 brcmfmac43456-sdio.txt
-rw-r--r-- 1 root root  626140 Jan 30 17:49 brcmfmac4350-pcie.bin
-rw-r--r-- 1 root root  623304 Jan 30 17:49 brcmfmac4350c2-pcie.bin
-rw-r--r-- 1 root root  605388 Jan 30 17:49 brcmfmac4354-sdio.bin
-rw-r--r-- 1 root root  648770 Jan 30 17:49 brcmfmac4356-pcie.bin
-rw-r--r-- 1 root root    2515 Jan  1  2020 brcmfmac4356-pcie.gpd-win-pocket.txt
-rw-r--r-- 1 root root  526383 Jan 30 17:49 brcmfmac4356-sdio.bin
-rw-r--r-- 1 root root  557056 Jan 30 17:49 brcmfmac43569.bin
-rw-r--r-- 1 root root  550333 Jan 30 17:49 brcmfmac43570-pcie.bin
-rw-r--r-- 1 root root  633817 Jan 30 17:49 brcmfmac4358-pcie.bin
-rw-r--r-- 1 root root  595472 Jan 30 17:49 brcmfmac43602-pcie.ap.bin
-rw-r--r-- 1 root root  635449 Jan 30 17:49 brcmfmac43602-pcie.bin
-rw-r--r-- 1 root root 1105361 Jan 30 17:49 brcmfmac4366b-pcie.bin
-rw-r--r-- 1 root root 1120971 Jan  1  2020 brcmfmac4366c-pcie.bin
-rw-r--r-- 1 root root  623448 Jan 30 17:49 brcmfmac4371-pcie.bin
-rw-r--r-- 1 root root  457994 Jan 30 17:49 brcmfmac4373-sdio.bin
-rw-r--r-- 1 root root  479232 Jan 30 17:49 brcmfmac4373.bin
root@rpi4:~#

Are you sure that error -2 is only for file not found ?

The exact message is:
Code:

[    3.751663] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43455-sdio for chip BCM4345/6
[    3.754521] usbcore: registered new interface driver brcmfmac
[    3.783214] brcmfmac mmc1:0001:1: Direct firmware load for brcm/brcmfmac43455-sdio.raspberrypi,4-model-b.txt failed with error -2

Does that mean I should rename it in rcmfmac43455-sdio.raspberrypi ?
If so exactly which one and what precise name ?
these ate the files that almost match the name in dmesg
Code:

brcmfmac43455-sdio.bin      brcmfmac43455-sdio.clm_blob  brcmfmac43455-sdio.txt
And that is after root is mounted:
Code:

[    1.455027] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
In any case later I find:
Code:

[    4.043040] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43455-sdio for chip BCM4345/6
[    4.056123] brcmfmac: brcmf_c_preinit_dcmds: Firmware: BCM4345/6 wl0: Jan  4 2021 19:56:29 version 7.45.229 (617f1f5 CY) FWID 01-2dbd9d2e


Emerson 01-30-2021 01:41 PM

Yes error -2 is not found, you could try renaming, it does not hurt.

louigi600 01-30-2021 02:08 PM

Ok so to get the error -2 to dissapear I renamed
brcmfmac43455-sdio.txt
to
brcmfmac43455-sdio.raspberrypi,4-model-b.txt
but still hciconfig shows nothing

I had a spare uSD so I put raspbian on it and the bloetooth seems to work there ... I wonder if it's a kernel problem.

Exaga 01-30-2021 04:25 PM

Quote:

Originally Posted by louigi600 (Post 6213987)
I had a spare uSD so I put raspbian on it and the bloetooth seems to work there ... I wonder if it's a kernel problem.

Looks like we need to review the firmware which SARPi distributes for Bluetooth. It's not the same as Raspberry Pi OS. I'll keep you posted. :thumbsup:

louigi600 01-31-2021 12:40 AM

1 Attachment(s)
Quote:

Originally Posted by Exaga (Post 6214023)
Looks like we need to review the firmware which SARPi distributes for Bluetooth. It's not the same as Raspberry Pi OS. I'll keep you posted. :thumbsup:

There is also something wrong in kernel 5.10.11 ... it will not boot properly on my rpi4 .... it starts ok but at some point before reaching init it slows down to snail with no slime pace ... honestly it tool like 3 minutes to eave reach the point where I see going multiuser ... and then still minutes waiting before I give up (even before I get the login prompt).

I did cheat a little and manually install kernel, modules, rc.modules-<kernel version> and hack ... manually doing most of the stuff that doinst would do ... is there something I left out that could cause this ? like not updating config.txt or cmdline.txt or the boot firmware ?
I looked a bit more into this and noticed that there are quite a few files that differ from what I have (sarpi4-boot-firmware-armv7l-1_slackcurrent_13May20_sp1.txz) to the new boot firmware:
Code:

* System.map differs
* bcm2708-rpi-b-plus.dtb differs
* bcm2708-rpi-b-rev1.dtb differs
* bcm2708-rpi-b.dtb differs
* bcm2708-rpi-cm.dtb differs
* bcm2708-rpi-zero-w.dtb differs
* bcm2708-rpi-zero.dtb differs
* bcm2709-rpi-2-b.dtb differs
* bcm2710-rpi-2-b.dtb differs
* bcm2710-rpi-3-b-plus.dtb differs
* bcm2710-rpi-3-b.dtb differs
* bcm2710-rpi-cm3.dtb differs
* bcm2711-rpi-4-b.dtb differs
* bootcode.bin differs
* config.gz differs
* fixup.dat differs
* fixup4.dat differs
* fixup4cd.dat differs
* fixup4db.dat differs
* fixup4x.dat differs
* fixup_cd.dat differs
* fixup_db.dat differs
* fixup_x.dat differs
* kernel7l.img differs
* start.elf differs
* start4.elf differs
* start4cd.elf differs
* start4db.elf differs
* start4x.elf differs
* start_cd.elf differs
* start_db.elf differs
* start_x.elf differs
- bcm2711-rpi-400.dtb only in new package
- bcm2711-rpi-cm4.dtb only in new package

I attached the script to quickly check and produce the above output *did not want to produce diff like output)/

The new boot firmware can boot the old kernel ... and also new kernel seems to boot fine with it.
Be warned : update both kernel and boot firmware else you get in trouble ;)
old kernel and new boot firmware: no bt device
new kernel and latest SARPi-hack firmware: no bt device
New kernel and raspbian firmware: still no bt device

How do they get it working on raspbian ?

I also found a github project with the brcm firmware and the stuff there does not match with SARPi nor raspbian ... is that stuff any good ?

PS: sorry for calling "Raspberripi OS" "rasbian" ... it may seem that I put something old on my RPI4 but that is not the case I downloaded 2021-01-11-raspios-buster-armhf.zip
Nice to note they don't call it raspbian any more but they still have the debian release name "buster"

pchristy 01-31-2021 02:43 AM

One of the patches I pointed to earlier corrects an error in bluez. Bluez looks for firmware in /etc/firmware rather than /lib/firmware. One of the three patches is to fix that. The other two are specifically for the chip used in the 400.

--
Pete

louigi600 01-31-2021 03:11 AM

Quote:

Originally Posted by pchristy (Post 6214147)
One of the patches I pointed to earlier corrects an error in bluez. Bluez looks for firmware in /etc/firmware rather than /lib/firmware. One of the three patches is to fix that. The other two are specifically for the chip used in the 400.

--
Pete

Ok but I don't want to recompile so I will link /etc/firmware to /lib/firmware and hopefully bluez will find the firmware
Code:

root@rpi4:/etc# ls -ld /etc/firmware
lrwxrwxrwx 1 root root 15 Jan 31 10:12 /etc/firmware -> ../lib/firmware/
root@rpi4:/etc#

Restarted rc.bluetooth and still nothing
Full reboot and still no bt device

pchristy 01-31-2021 03:23 AM

The other thing worth trying is to replace the /lib/firmware/brcm folder with the one from Raspbian. That is what got mine to at least load initially. Sarpi-hacks should do this, but if it didn't work for you, try going back to the original firmware supplied for the device.

--
Pete

Exaga 01-31-2021 03:52 AM

Quote:

Originally Posted by louigi600 (Post 6214120)
There is also something wrong in kernel 5.10.11 ... it will not boot properly on my rpi4 .... it starts ok but at some point before reaching init it slows down to snail with no slime pace ... honestly it tool like 3 minutes to eave reach the point where I see going multiuser ... and then still minutes waiting before I give up (even before I get the login prompt).

I have no idea or answer to what the problem is for you here. Right now I have 3 Slackware ARM current installations - (2 on sd card and 1 on SSD) all running kernel 5.10.11 - which I use for various purposes, but none as a desktop system, and they all boot very quickly and work as expected. In fact, I've noticed a slight speed increase in Slackware ARM operations since Christmas 2020, which is probably due to MoZes updating pkgs and/or making things better and/or streamlining, etc.

Quote:

Originally Posted by louigi600 (Post 6214120)
The new boot firmware can boot the old kernel ... and also new kernel seems to boot fine with it.
Be warned : update both kernel and boot firmware else you get in trouble ;)
old kernel and new boot firmware: no bt device
new kernel and latest SARPi-hack firmware: no bt device
New kernel and raspbian firmware: still no bt device

How do they get it working on raspbian ?

Back in 2019 I created a LQ post regarding RPi3/RPi4 Bluetooth. Every once in a while it breaks and the problems users are experiencing recently can be attributed to this. Obviously the RPi guys keep on top of their own hardware/software and fix any issues that may arise. I usually wait until there is a problem before looking into it and trying to solve it. I don't use RPi onboard wireless or Bluetooth and when there is a need for it I have my own plug-in USB devices for these purposes. These USB devices are infinitely more reliable, generally better supported under Slackware ARM (depending on the device in question), and not usually 'headache-inducing' like the RPi's onboard Cypress wireless combo shizzle can be at times.

I suspect something has changed in kernel 5.10.x that worked fine in kernel 5.4.x. That's what I'll be looking into initially.

Quote:

Originally Posted by louigi600 (Post 6214120)
I also found a github project with the brcm firmware and the stuff there does not match with SARPi nor raspbian ... is that stuff any good ?

The brcm firmware that SARPi uses is currently https://archive.raspberrypi.org/debi...+rpt11_all.deb [2021-01-25 10:27]. I can't comment on the https://github.com/RPi-Distro/firmwa...ee/master/brcm firmware, but it looks to be somewhat out of date in many places.

TheTKS 01-31-2021 05:12 AM

You could try to look over here for hints
https://www.linuxquestions.org/quest...an-4175689292/

Wifi wasn't found
Code:

# ifconfig wlan0
gave
Code:

wlan0: error fetching interface information: Device not found
Wifi is working now that I removed all files from /lib/firmware/brcm and then reinstalled sarpi-hacks.

Note that I don't know if what I did there will also work for Bluetooth. I also don't know if it's everything I should have done ex. if I should have done a complete sarpi & kernel reinstall. Going to do that now.

TKS

louigi600 01-31-2021 05:41 AM

I suspect I should have done a diff with raspbian config.txt but even with
Code:

# Uncomment to enable Bluetooth LE
dtoverlay=pi3-miniuart-bt
enable_uart=1

I still don't see any hci device. Maybe there's a missing dependency in kernel that moved and importing the previous config looses it.
I will examine the lsmod output from raspbian and slackwareARM and see if I can catch something.
I looked at the differences in kernel config between raspbian and SARPi-current for RPi4
Code:

davide@nuc8i5:/tmp/rpi4-bt-issue$ zdiff raspbian.config.gz slackwarearm.config.gz  |grep BT
< # CONFIG_BT_SELFTEST is not set
> # CONFIG_BT_MSFTEXT is not set
> # CONFIG_BT_SELFTEST is not set
> # CONFIG_BT_FEATURE_DEBUG is not set
< # CONFIG_BT_HCIBTSDIO is not set
> CONFIG_BT_HCIBTSDIO=m
> # CONFIG_BT_HCIUART_RTL is not set
< CONFIG_BT_WILINK=m
davide@nuc8i5:/tmp/rpi4-bt-issue$

This might be a little more comprehensible:
Code:

davide@nuc8i5:/tmp/rpi4-bt-issue$ comm -23 <(zcat raspbian.config.gz |sort) <(zcat slackwarearm.config.gz |sort) | grep BT
# CONFIG_BT_HCIBTSDIO is not set
CONFIG_BT_WILINK=m
davide@nuc8i5:/tmp/rpi4-bt-issue$ comm -13 <(zcat raspbian.config.gz |sort) <(zcat slackwarearm.config.gz |sort) | grep BT
# CONFIG_BT_FEATURE_DEBUG is not set
# CONFIG_BT_HCIUART_RTL is not set
# CONFIG_BT_MSFTEXT is not set
CONFIG_BT_HCIBTSDIO=m
davide@nuc8i5:/tmp/rpi4-bt-issue$

And regarding the modules: (here are the modules that are only loaded in raspbian)
Code:

davide@nuc8i5:/tmp/rpi4-bt-issue$ comm -23 <(awk '{print $1}' < raspbian.lsmod | sort) <(awk '{print $1}' < slackwarearm.lsmod | sort)
8021q
btbcm
cec
cmac
drm
drm_kms_helper
drm_panel_orientation_quirks
fb_sys_fops
garp
gpu_sched
hci_uart
i2c_dev
ip_tables
libsha256
llc
rfcomm
snd
snd_bcm2835
snd_compress
snd_pcm
snd_pcm_dmaengine
snd_soc_core
snd_timer
stp
syscopyarea
sysfillrect
sysimgblt
v3d
vc4
x_tables
davide@nuc8i5:/tmp/rpi4-bt-issue$

I've highlighted the ones I'm sure are bluetooth related.

But even with a bit of module unload/load still no luck:
Code:

root@rpi4:~# lsmod | grep bt
btsdio                16384  0
bluetooth            421888  8 btsdio,bnep
root@rpi4:~# rmmod  btsdio
root@rpi4:~# modprobe btbcm
root@rpi4:~# modprobe hci_uart
root@rpi4:~# modprobe rfcomm
root@rpi4:~# hciconfig
root@rpi4:~#


TheTKS 01-31-2021 06:43 AM

Quote:

Originally Posted by TheTKS (Post 6214190)
You could try to look over here for hints
https://www.linuxquestions.org/quest...an-4175689292/
...

Note that I don't know if what I did there will also work for Bluetooth. I also don't know if it's everything I should have done ex. if I should have done a complete sarpi & kernel reinstall. Going to do that now.

I went back and reinstalled all sarpi packages and kernel-firmware, and once again had the same files in /lib/firmware/brcm that I had before, and no wifi (wlan0 not visible in ifconfig.)

Then I again deleted all files in /lib/firmware/brcm and reinstalled sarpi-hacks, and now have functioning wifi again.

TKS


All times are GMT -5. The time now is 08:15 PM.