GNU/Linux não responde ao pressionamento das teclas do teclado WB-8022 Bluetooth

Informações básicas de Hardware e Software


Clique/toque para exibir ou colapsar...
System:
  Kernel: 6.9.8-arch1-1 arch: x86_64 bits: 64
  Desktop: GNOME v: 46.3.1 Distro: Arch Linux
Machine:
  Type: Laptop System: Acer product: Aspire A515-51 v: V2.02
    serial: <superuser required>
  Mobo: KBL model: Charmander_KL v: V2.02 serial: <superuser required>
    UEFI: Insyde v: 2.02 date: 01/03/2019
Battery:
  ID-1: BAT1 charge: 37.4 Wh (99.7%) condition: 37.5/48.9 Wh (76.7%)
CPU:
  Info: dual core model: Intel Core i5-7200U bits: 64 type: MT MCP cache:
    L2: 512 KiB
  Speed (MHz): avg: 3100 min/max: 400/3100 cores: 1: 3100 2: 3101 3: 3101
    4: 3100
Graphics:
  Device-1: Intel HD Graphics 620 driver: i915 v: kernel
  Device-2: Generic HD WebCam driver: uvcvideo type: USB
  Display: wayland server: X.org v: 1.21.1.13 with: Xwayland v: 24.1.0
    compositor: gnome-shell driver: gpu: i915 resolution: no compositor data
    resolution: 1: 2560x1080 2: 1366x768
  API: EGL Message: EGL data requires eglinfo. Check --recommends.
Audio:
  Device-1: Intel Sunrise Point-LP HD Audio driver: snd_hda_intel
  API: ALSA v: k6.9.8-arch1-1 status: kernel-api
  Server-1: PipeWire v: 1.2.0 status: active
Network:
  Device-1: Realtek RTL8111/8168/8211/8411 PCI Express Gigabit Ethernet
    driver: r8169
  IF: enp1s0f1 state: up speed: 100 Mbps duplex: full mac: <filter>
  Device-2: Qualcomm Atheros QCA9377 802.11ac Wireless Network Adapter
    driver: ath10k_pci
  IF: wlan0 state: up mac: <filter>
Bluetooth:
  Device-1: N/A driver: btusb type: USB
  Report: hciconfig ID: hci0 state: up address: <filter> bt-v: 4.2
Drives:
  Local Storage: total: 238.47 GiB used: 29.26 GiB (12.3%)
  ID-1: /dev/nvme0n1 vendor: Seagate model: XPG GAMMIX S11 Pro
    size: 238.47 GiB
Partition:
  ID-1: / size: 46.95 GiB used: 15.81 GiB (33.7%) fs: ext4 dev: /dev/nvme0n1p5
  ID-2: /boot size: 511 MiB used: 142.4 MiB (27.9%) fs: vfat
    dev: /dev/nvme0n1p1
  ID-3: /home size: 98.83 GiB used: 13.31 GiB (13.5%) fs: ext4
    dev: /dev/nvme0n1p7
Swap:
  ID-1: swap-1 type: zram size: 3.82 GiB used: 0 KiB (0.0%) dev: /dev/zram0
  ID-2: swap-2 type: partition size: 8 GiB used: 0 KiB (0.0%)
    dev: /dev/nvme0n1p2
Sensors:
  System Temperatures: cpu: 47.0 C mobo: N/A
  Fan Speeds (rpm): N/A
Info:
  Memory: total: 8 GiB available: 7.64 GiB used: 4.04 GiB (52.9%)
  Processes: 239 Uptime: 27m Shell: Bash inxi: 3.3.35

O problema…

Olá, eu gostaria de ajuda de alguém para investigar por que o teclado Jiaxi modelo WB-8022 infelizmente não parea com o sistema operacionais GNU/Linux, ou simplesmente Linux.

Considerações antes de dedicar alguns esforço para esse problema…

  • consigo parear esse teclado no dualboot com o Windows 10 no mesmo notebook, então me parece que o problema não é o dispositivo bluetooth integrado
    • testei parear usando um dongle bluetooth USB, mas continua a falhar
    • usei o utilitário (essa é classificação correta?) bluetoothctl para parear, até consigo obter sucesso, mas o sistema não responde ao pressionamento das teclas. Alguns segundos depois, o teclado adormece e “nehum sinal de vida mais tem”, a não ser que eu repita novamente todo o processamento de pareamento com um novo endereço MAC (confira o vídeo anexado a postagem)
      • consigo parear o teclado Logitech K380 através do bluetoothctl sem dificuldade, aliás, foi a única forma que consegui parear com o GNU/Linux, a interface gráfica congela em uma das etapas de pareamento
  • já consegui parear o teclado além do computador/notebook: smarthphone Android e iOS e SmartTV
  • existem outros dois tópicos que debateram sobre esse mesmo problema aqui no fórum (tópico 1 e tópico 2), mas sem nenhuma solução. O tópico 2 oferece uma alternativa para sanar o problema, mas não funcionou comigo;
  • por favor, não tenho intenção de promover o anúncio do teclado - comprei o teclado no Aliexpress (esse é o anúncio) e tem uma avaliação com fotos que mostra o teclado pareado com sucesso no GNU/Linux (não sei qual distribuição, mas o desktop manager é o GNOME, o mesmo que uso). Para acessar essa avaliação, deslize a página do anúncio e acesse “Ver mais”. De qualquer forma, estou enviando uma captura de tela por aqui mesmo da avaliação do usuário com as fotos.

Anexos


Clique/toque para exibir ou colapsar...

Agradeço de antemão quem se dispor a me ajudar a encontrar alguma solução para esse problema, se existir…

Ele chega a pedir algum pin ao parear nos aparelhos que você teve sucesso?
Abre uma outra janela do terminal com o comando

sudo dmesg --follow

ou

sudo journalctl -f

e tenta conectar o teclado algumas vezes, depois envia a saída aqui caso seja muito grande você pode utilizar algum serviço de paste como pastebin e afins.

Olá, bad_at_usernames. :wave:
Obrigado por se dispor a me ajudar.

Tenho a sensação de que esses comandos possam exibir informações sensíveis sobre o meu sistema, mas escolho confiar em você.

Saída dos comandos

Saída do comando sudo dmesg --follow

Arquivo de texto no Google Drive

Saída do comando sudo journalctl -f
Aug 10 19:12:52 archlinux-mat sudo[3640]: pam_unix(sudo:session): session closed for user root
Aug 10 19:12:53 archlinux-mat sudo[3807]: pam_systemd_home(sudo:account): New sd-bus connection (system-bus-pam-systemd-home-3807) opened.
Aug 10 19:12:53 archlinux-mat sudo[3807]:      mat : TTY=pts/0 ; PWD=/home/mat ; USER=root ; COMMAND=/usr/bin/journalctl -f
Aug 10 19:12:53 archlinux-mat sudo[3807]: pam_unix(sudo:session): session opened for user root(uid=0) by mat(uid=1000)
Aug 10 19:12:55 archlinux-mat wpa_supplicant[469]: wlan0: CTRL-EVENT-SIGNAL-CHANGE above=1 signal=-69 noise=-114 txrate=0
Aug 10 19:13:02 archlinux-mat wpa_supplicant[469]: wlan0: CTRL-EVENT-SIGNAL-CHANGE above=0 signal=-75 noise=-114 txrate=0
Aug 10 19:13:14 archlinux-mat sudo[3807]: pam_unix(sudo:session): session closed for user root
Aug 10 19:13:42 archlinux-mat sudo[3849]: pam_systemd_home(sudo:account): New sd-bus connection (system-bus-pam-systemd-home-3849) opened.
Aug 10 19:13:42 archlinux-mat sudo[3849]:      mat : TTY=pts/0 ; PWD=/home/mat ; USER=root ; COMMAND=/usr/bin/journalctl -f
Aug 10 19:13:42 archlinux-mat sudo[3849]: pam_unix(sudo:session): session opened for user root(uid=0) by mat(uid=1000)
Aug 10 19:13:47 archlinux-mat wpa_supplicant[469]: wlan0: CTRL-EVENT-SIGNAL-CHANGE above=1 signal=-63 noise=-111 txrate=0
Aug 10 19:15:19 archlinux-mat rtkit-daemon[572]: Successfully made thread 1194 of process 1169 owned by '1000' high priority at nice level 0.
Aug 10 19:15:19 archlinux-mat rtkit-daemon[572]: Supervising 7 threads of 4 processes of 1 users.
Aug 10 19:15:19 archlinux-mat rtkit-daemon[572]: Supervising 6 threads of 3 processes of 1 users.
Aug 10 19:15:19 archlinux-mat rtkit-daemon[572]: Supervising 6 threads of 3 processes of 1 users.
Aug 10 19:15:19 archlinux-mat rtkit-daemon[572]: Successfully made thread 1194 of process 1169 owned by '1000' RT at priority 20.
Aug 10 19:15:19 archlinux-mat rtkit-daemon[572]: Supervising 7 threads of 4 processes of 1 users.
Aug 10 19:15:22 archlinux-mat wpa_supplicant[469]: wlan0: CTRL-EVENT-SIGNAL-CHANGE above=0 signal=-77 noise=-111 txrate=0
Aug 10 19:15:27 archlinux-mat sudo[4126]: pam_systemd_home(sudo:account): New sd-bus connection (system-bus-pam-systemd-home-4126) opened.
Aug 10 19:15:27 archlinux-mat sudo[4126]:      mat : TTY=pts/0 ; PWD=/home/mat ; USER=root ; COMMAND=/usr/bin/journalctl -f
Aug 10 19:15:27 archlinux-mat sudo[4126]: pam_unix(sudo:session): session opened for user root(uid=0) by mat(uid=1000)
Aug 10 19:15:51 archlinux-mat wpa_supplicant[469]: wlan0: CTRL-EVENT-SIGNAL-CHANGE above=1 signal=-69 noise=-112 txrate=0
Aug 10 19:18:00 archlinux-mat bluetoothd[418]: src/device.c:set_wake_allowed_complete() Set device flags return status: Invalid Parameters
Aug 10 19:18:00 archlinux-mat kernel: Bluetooth: hci0: Bad flag given (0x1) vs supported (0x0)
Aug 10 19:18:16 archlinux-mat wpa_supplicant[469]: wlan0: CTRL-EVENT-SIGNAL-CHANGE above=0 signal=-75 noise=-112 txrate=0
Aug 10 19:18:28 archlinux-mat wpa_supplicant[469]: wlan0: CTRL-EVENT-SIGNAL-CHANGE above=1 signal=-69 noise=-114 txrate=0

:exclamation: Observação

Tentei parear novamente o teclado WB-8022 enquanto executei o segundo comando. O primeiro, pelo que percebi, retém as informações na memória, independente se não estiver executando no momento ou não - mas me corriga, por favor, se eu estiver super errado.

Respondendo a sua pergunta

Com o Logitech K380, é necessário um pin para completar o pareamento no Windows e no iOS.

Mas com WB-8022, em todos os dispositivos que ele funcionou, não precisou inserir um pin, apesar de no manual do teclado mostrar que isso é um passo necessário.

Essas linhas chamam a atenção porem nada muito útil
Qual e o conteúdo do arquivo /etc/bluetooth/input.conf

O conteúdo do arquivo /etc/bluetooth/input.conf é...
# Configuration file for the input service

# This section contains options which are not specific to any
# particular interface
[General]

# Set idle timeout (in seconds) before the connection will be disconnect and
# the input device is removed.
# Defaults: 0 (disabled)
#IdleTimeout=0

# Enable HID protocol handling in userspace input profile
# Defaults to true (Use UHID instead of kernel HIDP)
#UserspaceHID=true

# Limit HID connections to bonded devices
# The HID Profile does not specify that devices must be bonded, however some
# platforms may want to make sure that input connections only come from bonded
# device connections. Several older mice have been known for not supporting
# pairing/encryption.
# Defaults to true for security.
#ClassicBondedOnly=true

# LE upgrade security
# Enables upgrades of security automatically if required.
# Defaults to true to maximize device compatibility.
#LEAutoSecurity=true

:exclamation: Observação

Eu fiz o pareamento do teclado novamente, desde que eu estou enviando o conteúdo do arquivo em uma outra sessão, depois de ter desligado e ligado novamente o notebook.

Descomenta essa linha e substitua o true para false

# Enable HID protocol handling in userspace input profile
# Defaults to true (Use UHID instead of kernel HIDP)
UserspaceHID=false

Apos isso reinicia o pc e veja se o teclado funciona

Infelizmente, ainda não consigo parear, bad_at_usernames.

Estou enviando as saídas dos comandos que você sugeriu anteriormente mais uma vez, porém com as recentes alterações que você recomendou.

sudo journactl -f
Aug 12 09:16:14 archlinux-mat kernel: ath10k_pci 0000:02:00.0:    [ 7] BadDLLP               
Aug 12 09:16:24 archlinux-mat sudo[2766]: pam_unix(sudo:session): session closed for user root
Aug 12 09:17:12 archlinux-mat systemd[1042]: Started VTE child process 3135 launched by kgx process 2648.
Aug 12 09:17:12 archlinux-mat systemd[1]: Starting Cleanup of Temporary Directories...
Aug 12 09:17:12 archlinux-mat systemd[1]: systemd-tmpfiles-clean.service: Deactivated successfully.
Aug 12 09:17:12 archlinux-mat systemd[1]: Finished Cleanup of Temporary Directories.
Aug 12 09:17:12 archlinux-mat systemd[1]: run-credentials-systemd\x2dtmpfiles\x2dclean.service.mount: Deactivated successfully.
Aug 12 09:17:43 archlinux-mat sudo[3151]: pam_systemd_home(sudo:auth): New sd-bus connection (system-bus-pam-systemd-home-3151) opened.
Aug 12 09:17:46 archlinux-mat sudo[3151]:      mat : TTY=pts/0 ; PWD=/home/mat ; USER=root ; COMMAND=/usr/bin/journalctl -f
Aug 12 09:17:46 archlinux-mat sudo[3151]: pam_unix(sudo:session): session opened for user root(uid=0) by mat(uid=1000)
Aug 12 09:17:49 archlinux-mat sudo[3158]: pam_systemd_home(sudo:auth): New sd-bus connection (system-bus-pam-systemd-home-3158) opened.
Aug 12 09:17:51 archlinux-mat sudo[3158]:      mat : TTY=pts/1 ; PWD=/home/mat ; USER=root ; COMMAND=/usr/bin/dmesg --follow
Aug 12 09:17:51 archlinux-mat sudo[3158]: pam_unix(sudo:session): session opened for user root(uid=0) by mat(uid=1000)
Aug 12 09:19:29 archlinux-mat rtkit-daemon[570]: Successfully made thread 1219 of process 1194 owned by '1000' high priority at nice level 0.
Aug 12 09:19:29 archlinux-mat rtkit-daemon[570]: Supervising 7 threads of 4 processes of 1 users.
Aug 12 09:19:29 archlinux-mat rtkit-daemon[570]: Supervising 6 threads of 3 processes of 1 users.
Aug 12 09:19:29 archlinux-mat rtkit-daemon[570]: Supervising 6 threads of 3 processes of 1 users.
Aug 12 09:19:29 archlinux-mat rtkit-daemon[570]: Successfully made thread 1219 of process 1194 owned by '1000' RT at priority 20.
Aug 12 09:19:29 archlinux-mat rtkit-daemon[570]: Supervising 7 threads of 4 processes of 1 users.
Aug 12 09:19:29 archlinux-mat rtkit-daemon[570]: Successfully made thread 1219 of process 1194 owned by '1000' high priority at nice level 0.
Aug 12 09:19:29 archlinux-mat rtkit-daemon[570]: Supervising 7 threads of 4 processes of 1 users.
Aug 12 09:19:30 archlinux-mat rtkit-daemon[570]: Supervising 6 threads of 3 processes of 1 users.
Aug 12 09:19:30 archlinux-mat rtkit-daemon[570]: Supervising 6 threads of 3 processes of 1 users.
Aug 12 09:19:30 archlinux-mat rtkit-daemon[570]: Successfully made thread 1219 of process 1194 owned by '1000' RT at priority 20.
Aug 12 09:19:30 archlinux-mat rtkit-daemon[570]: Supervising 7 threads of 4 processes of 1 users.
Aug 12 09:19:30 archlinux-mat gdm-password][3213]: pam_systemd_home(gdm-password:auth): New sd-bus connection (system-bus-pam-systemd-home-3213) opened.
Aug 12 09:19:31 archlinux-mat gdm-password][3213]: gkr-pam: unlocked login keyring
Aug 12 09:19:32 archlinux-mat systemd[1042]: Started dbus-:[email protected].
Aug 12 09:19:32 archlinux-mat NetworkManager[415]: <info>  [1723465172.0839] agent-manager: agent[904dbb7f7286bcb6,:1.62/org.gnome.Shell.NetworkAgent/1000]: agent registered

Saída do comando sudo dmesg --follow através desse link no Google Drive.

A saída ao parear através do bluetoothctl continuam as mesmas.

Adicional: muito obrigado pela prontidão em me ajudar, bad_at_username. Lamento não está a par.

Não esta pareando mesmo utilizando o dongle usb?
Seguindo o Bluetooth - ArchWiki

Pare o serviço bluetooth.service

sudo systemctl stop bluetooth.service

E inicie com o parametro -d

/usr/lib/bluetooth/bluetoothd -n -d

Após isso mantenha uma janela do terminal aberta com o

sudo journalctl -f

Enquanto tenta conectar o teclado algumas vezes em outro terminal e poste a saída do journalctl

Ao executar esse comando, o seguinte erro aparece no terminal:

bluetoothd[3758]: Bluetooth daemon 5.76
bluetoothd[3758]: src/main.c:parse_config() parsing /etc/bluetooth/main.conf
D-Bus setup failed: Name already in use
bluetoothd[3758]: src/main.c:main() Unable to get on D-Bus

E me desculpe, me expressei errado: o teclado pareia (como sempre acontece ao tentar realizar o pareamento e conexão através do bluetoothctl), porém o sistema não reage a nenhum pressionamento de qualquer tecla.

Acabei esquecendo e necessário executar esse comando como root

sudo /usr/lib/bluetooth/bluetoothd -n -d

Na verdade, o stderr enviado na última mensagem minha é o comando executado com previlégio de administrador.

O stderr abaixo é da execução do comando sem o sudo:

bluetoothd[3393]: Bluetooth daemon 5.76
bluetoothd[3393]: src/main.c:parse_config() parsing /etc/bluetooth/main.conf
D-Bus setup failed: Request to own name refused by policy
bluetoothd[3393]: src/main.c:main() Unable to get on D-Bus

Capture os logs do bluetooth com o comando abaixo aberto em uma janela do terminal

sudo btmon --write ~/hcitrace.snoop | tee ~/hcitrace.txt

Enquanto tenta conectar o teclado algumas vezes e poste o conteúdo do hcitrace.txt ou hcitrace.snoop

Uma possível solução seria desativar o ertm.
Isso resolveu alguns casos de controles xbox que mesmo após pareado não mostra entrada, sei que isso e um teclado mais não custa tentar.
Você pode desativar temporariamente com o comando abaixo e ver se o teclado começa a responder.

sudo bash -c "echo Y > /sys/module/bluetooth/parameters/disable_ertm"

https://bbs.archlinux.org/viewtopic.php?pid=1890288#p1890288
https://wiki.ubuntu.com/DebuggingBluetooth#How_to_use_btmon_to_capture_an_HCI_trace

Eu testei a recomendação de desativar o parâmetro ertm, mas o mesmo comportamento persistiu: teclado pareia, conecta, porém pressionar as teclas não desencadeia nenhuma ação no sistema operacional.


Os logs dos arquivos estão disponíveis novamente no Google Drive através desse link. O conteúdo de um é enorme e outro não entendi como se faz para “lê-lo”.


Destacando novamente: obrigado pela insistência em tentar resolver esse meu problema, :pray: .

O teclado utiliza bluetooth low energy tente restringir o adaptador bluetooth a usar só esse modo

Para isso Adicione ControllerMode = le no arquivo /etc/bluetooth/input.conf após [General]

# Configuration file for the input service

# This section contains options which are not specific to any
# particular interface
[General]
ControllerMode = le

Reinicie e veja se o teclado da algum sinal de vida

Lamento, nada de diferente, bad_at_usernames. O mesmo comportamento persiste.

Confirmo que reiniciei o notebook após modificar o arquivo de configuração input.conf.

Desculpe na verdade essa linha era para ser adicionada em /etc/bluetooth/main.conf talvez você encontre nesse arquivo algo parecido com isso

# Restricts all controllers to the specified transport. Default value
# is "dual", i.e. both BR/EDR and LE enabled (when supported by the HW).
# Possible values: "dual", "bredr", "le"
#ControllerMode = dual

Nesse caso e só substituir o #ControllerMode = dual para ControllerMode = le

# Possible values: "dual", "bredr", "le"
ControllerMode = le

No caso dessa linha não existir no arquivo adicione o ControllerMode = le após o [General] e desfaça as alterações no /etc/bluetooth/input.conf
reinicie logo em seguida

EDIT: outro parâmetro que pode ser alterado e o JustWorksRepairing para always (padrão e never)

# Specify the policy to the JUST-WORKS repairing initiated by peer
# Possible values: "never", "confirm", "always"
# Defaults to "never"
JustWorksRepairing = always

Continuamos sem sucesso, bad_at_usernames.

  1. Desfiz a alteração do arquivo input.conf. > modifiquei o parâmetro ControllerMode no arquivo main.conf como você pediu > reiniciei o notebook. = o teclado Logitech K380 não pareava mais com o notebook e o mesmo comportamento com o teclado Jiaxi persiste;
  2. Abri novamente o arquivo main.conf > modifiquei o parâmetro JustWorkRepairing como você pediu > Reiniciei o notebook = o mesmo comportamento do “experimento” 1. persiste;
  3. Abri novamente o arquivo main.conf, voltei o parâmetro ControllerMode para o padrão (valor dual) > reiniciei o notebook = o teclado Logitech K380 voltou a parear com o notebook, teclado Jiaxi continua com o mesmo comportamento

Sério, eu agradeço mesmo a sua paciência por chegar até aqui. Se as suas possibilidades esgotaram ou se quiser encerrar o meu problema nesse momento, eu compreenderei perfeitamente.

Embora aparentemente não tivemos nenhum avanço até esse ponto, eu estou impressionado com as suas habilidades.

Nesse caso recomendo que abra um issue no repositório do bluez explicando o problema e anexando o hcitrace

Como algumas pessoas conseguiram o teclado funcionando talvez seja alguma regressão

1 curtida

Entendido, bad_at_usernames.

Assim que eu criar o relatório de problema no repositório, eu compartilho a publicação por aqui.

Muito obrigado por toda ajuda. :heart:

Já deu uma verificada se o mesmo n está bloqueado?
Executa o rfkill para verificar.

sudo rfkill list bluetooth