leifliddy / asahi-fedora-builder

Builds a minimal Fedora image to run on Apple M-series systems
MIT License
242 stars 12 forks source link

Bluetooth? #5

Closed MichaByte closed 2 years ago

MichaByte commented 2 years ago

Hi, first of all - thanks so much for this project. I can't seem to get bluetooth to work, but it was added in the latest release. I've run sudo dnf upgrade and still can't get it. Is there an ETA on this? Thanks

MichaByte commented 2 years ago

I have GNOME installed, and it says adapter not found. Bluez is installed.

leifliddy commented 2 years ago

So I've recently transitioned from using scripts bundled with mkosi to using rpm's as it makes upgrading and maintaining things much easier (obviously) So if you've already performed an install prior to 13 July, then please do the following. remove these files from /usr/local/sbin

rm /usr/local/sbin/{first-boot,update-grub,update-vendor-firmware}

remove this file as well

rm /etc/dracut.conf.d/m1.conf

then install these two rpms

dnf install asahi-scripts asahi-fwextract

when you install the asahi-fwextract package, one of two messages will be displayed to screen

Upgrading vendor firmware package
Firmware upgraded

or

No /boot/efi/asahi/all_firmware.tar.gz, skipping firmware extraction

If you receive that 2nd message, please let me know. Otherwise ensure the bluez package is installed, then reboot your system (needed for the firmware to update)

ensure the bluetooth service is enabled/started

systemctl enable --now bluetooth.service

then run

bluetoothctl list

and see if the bluetooth controller is listed in the output It's not then please post the following output

dmesg | grep bcm

I'll push out kernel-5.19.0-rc5.asahi7.1 next weekend which contains improvements to the bluetooth driver.

leifliddy commented 2 years ago

@2231puppy Are you still having issues with bluetooth? Let me know if you need any help.

MichaByte commented 2 years ago

Hi, sorry for the late reply. I still can't seem to get bluetooth working. I had to reinstall after the 13th for unrelated reasons, so I'm not sure if the first first few steps still apply to me, but I did them anyway. The 2 rm commands both reported that the files didn't exist. The 2 packages were already installed, so I reinstalled them and got Firmware upgraded. Then I rebooted, enabled bluetooth, and tried bluetoothctl list. It didn't output anything. dmesg | grep bcm outputs the following:

[    8.692522] hci_bcm4377 0000:01:00.1: Adding to iommu group 3
[    8.693726] hci_bcm4377 0000:01:00.1: unable to determine board type

Not sure where to go from here, but I can collect any more data if needed. Thanks

leifliddy commented 2 years ago

Interesting. It should be working. My dmesg output looks like

[    2.622829] hci_bcm4377 0000:01:00.1: Adding to iommu group 3
[    2.625257] hci_bcm4377 0000:01:00.1: enabling device (0000 -> 0002)
[    2.626828] hci_bcm4377 0000:01:00.1: Trying to load 'brcm/brcmbt4378b1-apple,shikoku-m.bin'
[    3.113748] hci_bcm4377 0000:01:00.1: Trying to load 'brcm/brcmbt4378b1-apple,shikoku-m.ptb'

can you post the output of uname -r Also which mac model are you running?

MichaByte commented 2 years ago

uname -r outputs 5.19.0-rc7.asahi2.1.fc36.aarch64. I'm running a 2020 Macbook Air M1. (16GB RAM)

leifliddy commented 2 years ago

That's really bizarre, it's not a firmware issue -- as your system isn't even enabling the bluetooth controller. I have the same macbook air model so it's definitely supported. I'm not a kernel developer, but I'll look into it and see what I can find.

leifliddy commented 2 years ago

Just to rule out any any issues with m1n1 could please do the following?

ensure this directory exists and contains the apple dtb files

[root@fedora ~]# ll /boot/dtb-$(uname -r)/apple/
total 732
-rwxr-xr-x 1 root root  57516 Jul 25 12:19 t6000-j314s.dtb
-rwxr-xr-x 1 root root  57524 Jul 25 12:19 t6000-j316s.dtb
-rwxr-xr-x 1 root root  65000 Jul 25 12:19 t6001-j314c.dtb
...

ensure you have the latest version of these packages installed

[root@fedora ~]# rpm -qa | egrep 'm1n1|uboot' | sort
m1n1-1.1.3-1.fc36.aarch64
uboot-asahi-20220713-1.fc36.aarch64
update-m1n1-20220712-1.fc36.noarch

manually generate a new m1n1 bootloader file.

[root@fedora ~]# update-m1n1 
m1n1 updated at /boot/efi/m1n1/boot.bin

# and verify it was updated

[root@fedora ~]# ll /boot/efi/m1n1/boot.bin
-rwx------ 1 root root 1798201 Jul 26 00:08 /boot/efi/m1n1/boot.bin

then reboot your system and post the output of these two commands

rfkill

and

dmesg -T | egrep 'hci_bcm4377|Bluetooth|brcmfmac|0000:01:00'
MichaByte commented 2 years ago

rfkill outputs:

ID TYPE DEVICE      SOFT      HARD
 0 wlan phy0   unblocked unblocked

The dmesg command outputs:

Mon Jul 25 23:54:29 2022] pci 0000:01:00.0: [14e4:4425] type 00 class 0x028000
[Mon Jul 25 23:54:29 2022] pci 0000:01:00.0: reg 0x10: [mem 0x00000000-0x0000ffff 64bit]
[Mon Jul 25 23:54:29 2022] pci 0000:01:00.0: reg 0x18: [mem 0x00000000-0x007fffff 64bit]
[Mon Jul 25 23:54:29 2022] pci 0000:01:00.0: supports D1 D2
[Mon Jul 25 23:54:29 2022] pci 0000:01:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[Mon Jul 25 23:54:29 2022] pci 0000:01:00.1: [14e4:5f69] type 00 class 0x028000
[Mon Jul 25 23:54:29 2022] pci 0000:01:00.1: reg 0x10: [mem 0x00000000-0x00007fff 64bit]
[Mon Jul 25 23:54:29 2022] pci 0000:01:00.1: reg 0x18: [mem 0x00000000-0x003fffff 64bit]
[Mon Jul 25 23:54:30 2022] pci 0000:01:00.1: supports D1 D2
[Mon Jul 25 23:54:30 2022] pci 0000:01:00.1: PME# supported from D0 D1 D2 D3hot D3cold
[Mon Jul 25 23:54:30 2022] pci 0000:01:00.0: BAR 2: assigned [mem 0x6c0000000-0x6c07fffff 64bit]
[Mon Jul 25 23:54:30 2022] pci 0000:01:00.1: BAR 2: assigned [mem 0x6c0800000-0x6c0bfffff 64bit]
[Mon Jul 25 23:54:30 2022] pci 0000:01:00.0: BAR 0: assigned [mem 0x6c0c00000-0x6c0c0ffff 64bit]
[Mon Jul 25 23:54:30 2022] pci 0000:01:00.1: BAR 0: assigned [mem 0x6c0c10000-0x6c0c17fff 64bit]
[Mon Jul 25 23:54:37 2022] Bluetooth: Core ver 2.22
[Mon Jul 25 23:54:37 2022] Bluetooth: HCI device and connection manager initialized
[Mon Jul 25 23:54:37 2022] Bluetooth: HCI socket layer initialized
[Mon Jul 25 23:54:37 2022] Bluetooth: L2CAP socket layer initialized
[Mon Jul 25 23:54:37 2022] Bluetooth: SCO socket layer initialized
[Mon Jul 25 23:54:37 2022] hci_bcm4377 0000:01:00.1: Adding to iommu group 2
[Mon Jul 25 23:54:37 2022] hci_bcm4377 0000:01:00.1: unable to determine board type
[Mon Jul 25 23:54:37 2022] usbcore: registered new interface driver brcmfmac
[Mon Jul 25 23:54:37 2022] brcmfmac 0000:01:00.0: Adding to iommu group 2
[Mon Jul 25 23:54:37 2022] brcmfmac 0000:01:00.0: enabling device (0000 -> 0002)
[Mon Jul 25 23:54:37 2022] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac4378b1-pcie for chip BCM4378/3
[Mon Jul 25 23:54:37 2022] brcmfmac 0000:01:00.0: Direct firmware load for brcm/brcmfmac4378b1-pcie.apple,shikoku-RASP-m-6.11-X0.bin failed with error -2
[Mon Jul 25 23:54:37 2022] brcmfmac 0000:01:00.0: Direct firmware load for brcm/brcmfmac4378b1-pcie.apple,shikoku-RASP-m-6.11.bin failed with error -2
[Mon Jul 25 23:54:37 2022] brcmfmac 0000:01:00.0: Direct firmware load for brcm/brcmfmac4378b1-pcie.apple,shikoku-RASP-m.bin failed with error -2
[Mon Jul 25 23:54:37 2022] brcmfmac 0000:01:00.0: Direct firmware load for brcm/brcmfmac4378b1-pcie.apple,shikoku-RASP.bin failed with error -2
[Mon Jul 25 23:54:37 2022] brcmfmac 0000:01:00.0: Direct firmware load for brcm/brcmfmac4378b1-pcie.apple,shikoku-X0.bin failed with error -2
[Mon Jul 25 23:54:38 2022] brcmfmac: brcmf_c_process_txcap_blob: TxCap blob found, loading
[Mon Jul 25 23:54:38 2022] brcmfmac: brcmf_c_process_cal_blob: Calibration blob provided by platform, loading
[Mon Jul 25 23:54:38 2022] brcmfmac: brcmf_c_preinit_dcmds: Firmware: BCM4378/3 wl0: Feb  8 2022 01:44:45 version 18.60.21.0.7.8.126 FWID 01-1cdae627
[Mon Jul 25 23:54:38 2022] brcmfmac 0000:01:00.0 wlp1s0f0: renamed from wlan0
[Mon Jul 25 23:55:54 2022] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[Mon Jul 25 23:55:54 2022] Bluetooth: BNEP filters: protocol multicast
[Mon Jul 25 23:55:54 2022] Bluetooth: BNEP socket layer initialized

I followed all of the steps you suggested. The packages you said to ensure were installed werent, so I installed them with dnf.

leifliddy commented 2 years ago

Which packages weren't installed? Also, you're booting via the internal nvme drive not an external usb drive right?

leifliddy commented 2 years ago

If these packages were not installed

m1n1.aarch64
uboot-asahi.aarch64
update-m1n1.noarch

then I suspect you're booting from a usb drive as those packages would have to be installed in order for the system to boot from the internal drive. These packages would have no effect on a usb drive.

leifliddy commented 2 years ago

If that's the case, then the solution is to update m1n1 on the internal drive.

MichaByte commented 2 years ago

Yes, I am booting from a USB drive. I'll try to update m1n1 - that just involves deleting the UEFI boot partitions and reinstalling it, right?

leifliddy commented 2 years ago

It depends. Which distro do you have installed on the internal drive?

MichaByte commented 2 years ago

I have the UEFI boot option, without a distro.

leifliddy commented 2 years ago

I've never done a UEFI install, but looking at the latest uefi zip file https://de.mirror.asahilinux.org/os/uefi-only-20220717-1.zip

It only contains a single file which is the m1n1 boot.bin bootloader file. Can't you just find and mount that partition in Fedora, then run that update-m1n1 script and then copy the resulting /boot/efi/m1n1/boot.bin file to that location?

You could also just extract the boot.bin from the latest uefi zip file https://de.mirror.asahilinux.org/os/uefi-only-20220717-1.zip and then overwrite the current boot.bin with that file.

leifliddy commented 2 years ago

the uefi partition (containing boot.bin) is likely /dev/nvme0n1p4 try mount /dev/nvme0n1p4 /mnt

otherwise, just post the output of blkid | grep nvme or better yet blkid | grep vfat

MichaByte commented 2 years ago

Thank you so much, updating m1n1 did it!