irreleph4nt / mkinitcpio-bluetooth

GNU General Public License v2.0
56 stars 4 forks source link

Keyboard connects but can't type luks password #16

Closed hughesjs closed 1 month ago

hughesjs commented 9 months ago

Using the config indicated in the readme, my keyboard now connects at the luks prompt (I can see this from the indicator lights).

However, it can't type the password. Once boot has completed, it types just fine.

Where can I start with debugging this? The keyboard is a Glove80.

irreleph4nt commented 7 months ago

Hi @hughesjs and my apologies for the late reply. You can troubleshoot by looking at dmesg as well as the systemjournal. In particular, journalctl -b -g bluetooth may be of use. Issue #17 also contains useful information, especially a hint that you may want to troubleshoot from within a rescue shell.

hughesjs commented 7 months ago

No worries at all mate, I appreciate you getting back to me. I'll try this after work tonight and let you know if I get anywhere

irreleph4nt commented 6 months ago

Hi @hughesjs, have you had a chance to give this another try? If not, I will close this issue at one point,

hughesjs commented 6 months ago

Honestly, I forgot. Will try to get to it this weekend!

hughesjs commented 6 months ago

So here's the output of journalctl nothing jumps out to me:

May 04 15:20:34 carbon-14 kernel: Bluetooth: Core ver 2.22 May 04 15:20:34 carbon-14 kernel: NET: Registered PF_BLUETOOTH protocol family May 04 15:20:34 carbon-14 kernel: Bluetooth: HCI device and connection manager initialized May 04 15:20:34 carbon-14 kernel: Bluetooth: HCI socket layer initialized May 04 15:20:34 carbon-14 kernel: Bluetooth: L2CAP socket layer initialized May 04 15:20:34 carbon-14 kernel: Bluetooth: SCO socket layer initialized May 04 15:20:34 carbon-14 kernel: Bluetooth: BNEP (Ethernet Emulation) ver 1.3 May 04 15:20:34 carbon-14 kernel: Bluetooth: BNEP filters: protocol multicast May 04 15:20:34 carbon-14 kernel: Bluetooth: BNEP socket layer initialized May 04 15:20:34 carbon-14 kernel: Bluetooth: hci0: HW/SW Version: 0x008a008a, Build Time: 20240219111427 May 04 15:20:34 carbon-14 kernel: Bluetooth: hci0: Device setup in 162152 usecs May 04 15:20:34 carbon-14 kernel: Bluetooth: hci0: HCI Enhanced Setup Synchronous Connection command is advertised, but not supported. May 04 15:20:34 carbon-14 kernel: Bluetooth: hci0: AOSP extensions version v1.00 May 04 15:20:34 carbon-14 kernel: Bluetooth: hci0: AOSP quality report is supported May 04 15:20:34 carbon-14 kernel: Bluetooth: MGMT ver 1.22 May 04 15:20:35 carbon-14 systemd[1]: Starting Bluetooth service... May 04 15:20:35 carbon-14 bluetoothd[2286]: Bluetooth daemon 5.75 May 04 15:20:35 carbon-14 systemd[1]: Started Bluetooth service. May 04 15:20:35 carbon-14 systemd[1]: Reached target Bluetooth Support. May 04 15:20:35 carbon-14 bluetoothd[2286]: Bluetooth management interface 1.22 initialized May 04 15:20:35 carbon-14 kernel: Bluetooth: hci0: HW/SW Version: 0x008a008a, Build Time: 20240219111427 May 04 15:20:35 carbon-14 NetworkManager[2284]: [1714832435.9722] Loaded device plugin: NMBluezManager (/usr/lib/NetworkManager/1.46.0-2/libnm-device-plugin-bluetooth.so) May 04 15:20:36 carbon-14 kernel: Bluetooth: hci0: Device setup in 162040 usecs May 04 15:20:36 carbon-14 kernel: Bluetooth: hci0: HCI Enhanced Setup Synchronous Connection command is advertised, but not supported. May 04 15:20:36 carbon-14 kernel: Bluetooth: hci0: AOSP extensions version v1.00 May 04 15:20:36 carbon-14 kernel: Bluetooth: hci0: AOSP quality report is supported May 04 15:20:37 carbon-14 systemd[2410]: Reached target Bluetooth. May 04 15:20:39 carbon-14 kernel: hid-generic 0005:16C0:27DB.0009: input,hidraw7: BLUETOOTH HID v0.01 Keyboard [Glove80] on 10:6f:d9:db:7b:6e May 04 15:20:43 carbon-14 kernel: Bluetooth: RFCOMM TTY layer initialized May 04 15:20:43 carbon-14 kernel: Bluetooth: RFCOMM socket layer initialized May 04 15:20:43 carbon-14 kernel: Bluetooth: RFCOMM ver 1.11 May 04 15:20:51 carbon-14 systemd[2410]: Stopped target Bluetooth. May 04 15:21:18 carbon-14 sudo[4458]: james : TTY=pts/1 ; PWD=/home/james ; USER=root ; COMMAND=/usr/bin/journalctl -b -g bluetooth May 04 15:21:50 carbon-14 sudo[4519]: james : TTY=pts/1 ; PWD=/home/james ; USER=root ; COMMAND=/usr/bin/journalctl -b -g bluetooth

And grepping my way through dmesg for bluetooth or Glove80 things look reasonable to me too:

[ 5.656375] Bluetooth: Core ver 2.22 [ 5.656383] NET: Registered PF_BLUETOOTH protocol family [ 5.656384] Bluetooth: HCI device and connection manager initialized [ 5.656387] Bluetooth: HCI socket layer initialized [ 5.656388] Bluetooth: L2CAP socket layer initialized [ 5.656390] Bluetooth: SCO socket layer initialized [ 5.659705] Bluetooth: BNEP (Ethernet Emulation) ver 1.3 [ 5.659707] Bluetooth: BNEP filters: protocol multicast [ 5.659708] Bluetooth: BNEP socket layer initialized [ 6.221203] Bluetooth: hci0: HW/SW Version: 0x008a008a, Build Time: 20240219111427 [ 6.377979] Bluetooth: hci0: Device setup in 162152 usecs [ 6.377981] Bluetooth: hci0: HCI Enhanced Setup Synchronous Connection command is advertised, but not supported. [ 6.651479] Bluetooth: hci0: AOSP extensions version v1.00 [ 6.651481] Bluetooth: hci0: AOSP quality report is supported [ 6.651537] Bluetooth: MGMT ver 1.22 [ 25.876355] usb 1-4: Product: Glove80 Left [ 25.892271] input: MoErgo Glove80 Left Keyboard as /devices/pci0000:00/0000:00:02.1/0000:05:00.0/0000:06:08.0/0000:09:00.0/0000:0a:0c.0/0000:0f:00.0/usb1/1-4/1-4:1.0/0003:16C0:27DB.0008/input/input9 [ 25.947105] hid-generic 0003:16C0:27DB.0008: input,hidraw6: USB HID v1.10 Keyboard [MoErgo Glove80 Left] on usb-0000:0f:00.0-4/input0 [ 44.892196] Bluetooth: hci0: HW/SW Version: 0x008a008a, Build Time: 20240219111427 [ 45.047766] Bluetooth: hci0: Device setup in 162040 usecs [ 45.047770] Bluetooth: hci0: HCI Enhanced Setup Synchronous Connection command is advertised, but not supported. [ 45.333015] Bluetooth: hci0: AOSP extensions version v1.00 [ 45.333019] Bluetooth: hci0: AOSP quality report is supported [ 48.207137] input: Glove80 Keyboard as /devices/virtual/misc/uhid/0005:16C0:27DB.0009/input/input26 [ 48.207297] hid-generic 0005:16C0:27DB.0009: input,hidraw7: BLUETOOTH HID v0.01 Keyboard [Glove80] on 10:6f:d9:db:7b:6e [ 52.268287] Bluetooth: RFCOMM TTY layer initialized [ 52.268292] Bluetooth: RFCOMM socket layer initialized [ 52.268294] Bluetooth: RFCOMM ver 1.11

The only think I can see that might be an issue would be that warning about HCI Enhanced Setup Synchronous?

It's just weird to me how my keyboard thinks it's connected but the keystrokes aren't recorded. So I'm fairly sure the device is connecting at the bluetooth level and something is going wrong further up the stack?

Here's my mkinitcpio.conf in-case you have any other ideas:

MODULES=(btrfs amdgpu)
BINARIES=(/usr/bin/btrfs)
FILES=()
HOOKS=(base udev autodetect keyboard keymap bluetooth modconf block plymouth encrypt filesystems fsck)
Raeitus commented 5 months ago

I am also having this issue with my NuPhy Air75 v2

$ journalctl -b -g bluetooth
May 10 22:43:23 rmdesk kernel: Bluetooth: Core ver 2.22
May 10 22:43:23 rmdesk kernel: NET: Registered PF_BLUETOOTH protocol family
May 10 22:43:23 rmdesk kernel: Bluetooth: HCI device and connection manager initialized
May 10 22:43:23 rmdesk kernel: Bluetooth: HCI socket layer initialized
May 10 22:43:23 rmdesk kernel: Bluetooth: L2CAP socket layer initialized
May 10 22:43:23 rmdesk kernel: Bluetooth: SCO socket layer initialized
May 10 22:43:23 rmdesk kernel: Bluetooth: BNEP (Ethernet Emulation) ver 1.3
May 10 22:43:23 rmdesk kernel: Bluetooth: BNEP filters: protocol multicast
May 10 22:43:23 rmdesk kernel: Bluetooth: BNEP socket layer initialized
May 10 22:43:23 rmdesk kernel: Bluetooth: hci0: HCI LE Coded PHY feature b
it is set, but its usage is not supported.
May 10 22:43:23 rmdesk kernel: Bluetooth: MGMT ver 1.22
May 10 22:43:23 rmdesk kernel: Bluetooth: hci1: RTL: examining hci_ver=0a hci_rev=000b lmp_ver=0a lmp_subver=8
761
May 10 22:43:23 rmdesk kernel: Bluetooth: hci1: RTL: rom_version status=0 version=1
May 10 22:43:23 rmdesk kernel: Bluetooth: hci1: RTL: loading rtl_bt/rtl8761bu_fw.bin
May 10 22:43:23 rmdesk kernel: Bluetooth: hci1: RTL: loading rtl_bt/rtl8761bu_config.bin
May 10 22:43:23 rmdesk kernel: Bluetooth: hci1: RTL: cfg_sz 6, total sz 30210
May 10 22:43:23 rmdesk kernel: Bluetooth: hci1: RTL: fw version 0xdfc6d922
May 10 22:43:23 rmdesk kernel: Bluetooth: MGMT ver 1.22
May 10 22:43:29 rmdesk systemd[1]: Starting Bluetooth service...
May 10 22:43:29 rmdesk bluetoothd[1906]: Bluetooth daemon 5.75
May 10 22:43:29 rmdesk systemd[1]: Started Bluetooth service.
May 10 22:43:29 rmdesk systemd[1]: Reached target Bluetooth Support.
May 10 22:43:29 rmdesk bluetoothd[1906]: Bluetooth management interface 1.22 initialized
May 10 22:43:29 rmdesk NetworkManager[1905]: <info>  [1715406209.3040] Loaded device plugin: NMBluezManager (/
usr/lib/NetworkManager/1.46.0-2/libnm-device-plugin-bluetooth.so)
May 10 22:43:34 rmdesk kernel: hid-generic 0005:0000:0000.0008: input,hidraw7: BLUETOOTH HID v0.00 Keyboard [N
uPhy Air75 V2-1] on f0:9e:4a:4a:ec:ea
May 10 22:43:38 rmdesk kernel: Bluetooth: RFCOMM TTY layer initialized
May 10 22:43:38 rmdesk kernel: Bluetooth: RFCOMM socket layer initialized
May 10 22:43:38 rmdesk kernel: Bluetooth: RFCOMM ver 1.11

/etc/mkinitcpio.conf

MODULES=()
BINARIES=()
FILES=()
HOOKS=(base udev autodetect microcode keyboard keymap bluetooth modconf block encrypt filesystems fsck)

My bluetooth keyboard's LED indicates that it is connected, but it isn't able to type my LUKS password. It doesn't detect any input. And this line seems to show it connected:

May 10 22:43:34 rmdesk kernel: hid-generic 0005:0000:0000.0008: input,hidraw7: BLUETOOTH HID v0.00 Keyboard [N
uPhy Air75 V2-1] on f0:9e:4a:4a:ec:ea
JU12000 commented 5 months ago

Just wanted to add to this that I'm also having the same problem with a Keychron K4. I've been using it wired for the past few weeks so I'm not sure when exactly it started but I just noticed it today. Posting relevant dumps:

Results of journalctl -b -g bluetooth:

May 24 15:58:10 Tango kernel: Bluetooth: Core ver 2.22
May 24 15:58:10 Tango kernel: NET: Registered PF_BLUETOOTH protocol family
May 24 15:58:10 Tango kernel: Bluetooth: HCI device and connection manager initialized
May 24 15:58:10 Tango kernel: Bluetooth: HCI socket layer initialized
May 24 15:58:10 Tango kernel: Bluetooth: L2CAP socket layer initialized
May 24 15:58:10 Tango kernel: Bluetooth: SCO socket layer initialized
May 24 15:58:10 Tango kernel: Bluetooth: hci0: Found device firmware: intel/ibt-20-1-3.sfi
May 24 15:58:10 Tango kernel: Bluetooth: hci0: Boot Address: 0x24800
May 24 15:58:10 Tango kernel: Bluetooth: hci0: Firmware Version: 132-3.24
May 24 15:58:10 Tango kernel: Bluetooth: hci0: Firmware already loaded
May 24 15:58:10 Tango kernel: Bluetooth: hci0: HCI LE Coded PHY feature bit is set, but its usage is not supported.
May 24 15:58:10 Tango kernel: Bluetooth: BNEP (Ethernet Emulation) ver 1.3
May 24 15:58:10 Tango kernel: Bluetooth: BNEP filters: protocol multicast
May 24 15:58:10 Tango kernel: Bluetooth: BNEP socket layer initialized
May 24 15:58:10 Tango kernel: Bluetooth: MGMT ver 1.22
May 24 15:58:11 Tango systemd[1]: Starting Bluetooth service...
May 24 15:58:11 Tango bluetoothd[1367]: Bluetooth daemon 5.75
May 24 15:58:11 Tango systemd[1]: Started Bluetooth service.
May 24 15:58:11 Tango bluetoothd[1367]: Bluetooth management interface 1.22 initialized
May 24 15:58:11 Tango systemd[1]: Reached target Bluetooth Support.
May 24 15:58:11 Tango NetworkManager[1405]: <info>  [1716591491.4797] Loaded device plugin: NMBluezManager (/usr/lib/NetworkManager/1.46.0->
May 24 15:58:20 Tango kernel: apple 0005:05AC:024F.0007: input,hidraw4: BLUETOOTH HID v1.1b Keyboard [Keychron K4] on ac:19:8e:f7:69:66
May 24 15:58:26 Tango kernel: Bluetooth: RFCOMM TTY layer initialized
May 24 15:58:26 Tango kernel: Bluetooth: RFCOMM socket layer initialized
May 24 15:58:26 Tango kernel: Bluetooth: RFCOMM ver 1.11

/etc/mkinicpio.conf:

MODULES=()
BINARIES=()
FILES=(/lib/firmware/intel/ibt-20-1-3.sfi.zst /lib/firmware/intel/ibt-20-1-3.ddc.zst)
HOOKS=(base udev autodetect modconf kms block keyboard numlock bluetooth encrypt filesystems fsck)

Same as above, the keyboard clearly "connects" but typing does nothing. As soon as I'm past the LUKS password and into my shell Bluetooth works as expected.

Really not sure what there is to go on here, sorry.

choopm commented 3 months ago

To anyone having issues typing while being connected: Did you read Issue #17? I noticed the same when typing my LUKS passphrase while being connected according to device LED.

Without further debugging I added cmac uhid to modules: now everything is working as expected :+1:

My settings for reference:

MODULES=(cmac uhid usbhid xhci_hcd)
FILES=(/usr/lib/firmware/rtl_bt/rtl8761bu_fw.bin.zst /usr/lib/firmware/rtl_bt/rtl8761bu_config.bin.zst)
HOOKS=(base udev modconf kms keyboard btrfs block mdadm_udev keymap bluetooth consolefont encrypt fsck filesystems)

@irreleph4nt Thanks for this convenient hook :heart:

hughesjs commented 1 month ago

I'll give this a try at the weekend and let you know if it's worked, thanks!

hughesjs commented 1 month ago

Not sure which bit made this work, but I added the modules mentioned above as well as the btmtk drive that the mediatek combined wifi/bluetooth card uses for bluetooth.

MODULES=(cmac uhid usbhid xhci_hcd btrfs btmtk)
BINARIES=(/usr/bin/btrfs)
FILES=()
HOOKS=(base udev autodetect microcode keyboard keymap modconf bluetooth block encrypt filesystems fsck)
irreleph4nt commented 1 month ago

Not sure which bit made this work, but I added the modules mentioned above as well as the btmtk drive that the mediatek combined wifi/bluetooth card uses for bluetooth.

MODULES=(cmac uhid usbhid xhci_hcd btrfs btmtk)
BINARIES=(/usr/bin/btrfs)
FILES=()
HOOKS=(base udev autodetect microcode keyboard keymap modconf bluetooth block encrypt filesystems fsck)

Hi James, Am I right to assume though that it is now working as intended for you? Thank you so much for revisting this old issue BTW! 😄

hughesjs commented 1 month ago

Yep, it's working like a charm! If I get a chance over the weekend, I might try removing bits until it no longer works to find out the minimum viable config