Estou tentando definir chaves de link bluetooth específicas para um dispositivo no Ubuntu 14.10, mas não consigo encontrar onde elas estão armazenadas.
O objetivo é ter um mouse bluetooth funcionando no Ubuntu e no Windows sem precisar emparelhá-lo depois de trocar de sistema operacional.
Todas as respostas que encontrei no AskUbuntu afirmam que as chaves estão armazenadas /var/lib/bluetooth/<mac_address>/linkkeys
e isso costumava ocorrer pelo menos até as 13.10, mas na 14.10 esse arquivo está ausente de uma instalação limpa da área de trabalho e a criação manual não tem efeito, é ignorada por bluetoothd.
EDIT: Parece que o mouse não emite uma solicitação de emparelhamento e as chaves de link não são armazenadas neste caso. No entanto, conectar o mouse no Windows e reiniciar o Ubuntu causa uma falha na conexão bluetooth (e o mouse precisa ser removido e adicionado novamente à lista de dispositivos bluetooth); portanto, há definitivamente alguma troca / autenticação de chave que impede mouse seja compartilhado nos dois sistemas operacionais. A questão permanece: como forçar o bluetoothd a salvar e usar as teclas de link salvas ao conectar este mouse?
Detalhes de hardware:
- Rato para notebook Microsoft Bluetooth 5000
- 413c: 8161 Dell Computer Corp. Wireless 365 Bluetooth (Broadcom BCM2046B1)
Os dois logs abaixo mostram que, para um dispositivo emparelhado (telefone celular), as chaves são armazenadas no arquivo linkkeys; esse não é o caso do mouse. Eu sei que versões mais antigas do bluetoothd também costumavam salvar as chaves de link para mouses, porque existem muitas respostas / tutoriais aqui no askubuntu e ubuntuforums sobre como copiar as chaves de link do Windows para o Ubuntu com o objetivo específico de compartilhar um mouse entre os dois sistemas operacionais.
Aqui está o log bluetoothd para a descoberta do mouse e a configuração da conexão:
bluetoothd[15615]: plugins/mgmtops.c:mgmt_start_discovery() index 0
bluetoothd[15615]: Discovery session 0x7feb52b14130 with :1.137 activated
bluetoothd[15615]: src/adapter.c:session_ref() 0x7feb52b14130: ref=1
bluetoothd[15615]: plugins/mgmtops.c:mgmt_event() cond 1
bluetoothd[15615]: plugins/mgmtops.c:mgmt_event() Received 10 bytes from management socket
bluetoothd[15615]: plugins/mgmtops.c:mgmt_cmd_complete()
bluetoothd[15615]: plugins/mgmtops.c:start_discovery_complete() hci0 type 1 status 0
bluetoothd[15615]: plugins/mgmtops.c:mgmt_event() cond 1
bluetoothd[15615]: plugins/mgmtops.c:mgmt_event() Received 8 bytes from management socket
bluetoothd[15615]: plugins/mgmtops.c:mgmt_discovering() Controller 0 type 1 discovering 1
bluetoothd[15615]: plugins/mgmtops.c:mgmt_event() cond 1
bluetoothd[15615]: plugins/mgmtops.c:mgmt_event() Received 25 bytes from management socket
bluetoothd[15615]: plugins/mgmtops.c:mgmt_device_found() hci0 addr DE:AD:BE:EF:00:00, rssi -43 flags 0x0003 eir_len 5
bluetoothd[15615]: plugins/mgmtops.c:mgmt_confirm_name() hci0 bdaddr DE:AD:BE:EF:00:00 name_known 0
bluetoothd[15615]: plugins/mgmtops.c:mgmt_event() cond 1
bluetoothd[15615]: plugins/mgmtops.c:mgmt_event() Received 16 bytes from management socket
bluetoothd[15615]: plugins/mgmtops.c:mgmt_cmd_complete()
bluetoothd[15615]: Unknown command complete for opcode 37
bluetoothd[15615]: plugins/mgmtops.c:mgmt_event() cond 1
bluetoothd[15615]: plugins/mgmtops.c:mgmt_event() Received 61 bytes from management socket
bluetoothd[15615]: plugins/mgmtops.c:mgmt_device_found() hci0 addr DE:AD:BE:EF:00:00, rssi -43 flags 0x0000 eir_len 41
bluetoothd[15615]: plugins/mgmtops.c:mgmt_event() cond 1
bluetoothd[15615]: plugins/mgmtops.c:mgmt_event() Received 8 bytes from management socket
bluetoothd[15615]: plugins/mgmtops.c:mgmt_discovering() Controller 0 type 1 discovering 0
bluetoothd[15615]: src/adapter.c:adapter_set_discovering() hci0 restarting discovery, disc_sessions 1
bluetoothd[15615]: plugins/mgmtops.c:mgmt_start_discovery() index 0
bluetoothd[15615]: plugins/mgmtops.c:mgmt_event() cond 1
bluetoothd[15615]: plugins/mgmtops.c:mgmt_event() Received 10 bytes from management socket
bluetoothd[15615]: plugins/mgmtops.c:mgmt_cmd_complete()
bluetoothd[15615]: plugins/mgmtops.c:start_discovery_complete() hci0 type 1 status 0
bluetoothd[15615]: plugins/mgmtops.c:mgmt_event() cond 1
bluetoothd[15615]: plugins/mgmtops.c:mgmt_event() Received 8 bytes from management socket
bluetoothd[15615]: plugins/mgmtops.c:mgmt_discovering() Controller 0 type 1 discovering 1
bluetoothd[15615]: plugins/mgmtops.c:mgmt_event() cond 1
bluetoothd[15615]: plugins/mgmtops.c:mgmt_event() Received 25 bytes from management socket
bluetoothd[15615]: plugins/mgmtops.c:mgmt_device_found() hci0 addr DE:AD:BE:EF:00:00, rssi -43 flags 0x0003 eir_len 5
bluetoothd[15615]: src/adapter.c:session_unref() 0x7feb52b14130: ref=0
bluetoothd[15615]: src/adapter.c:session_remove() Discovery session 0x7feb52b14130 with :1.137 deactivated
bluetoothd[15615]: src/adapter.c:session_remove() Stopping discovery
bluetoothd[15615]: plugins/mgmtops.c:mgmt_stop_discovery() index 0
bluetoothd[15615]: Stopping discovery
bluetoothd[15615]: src/adapter.c:create_device() DE:AD:BE:EF:00:00
bluetoothd[15615]: src/adapter.c:adapter_create_device() DE:AD:BE:EF:00:00
bluetoothd[15615]: src/device.c:device_create() Creating device /org/bluez/15615/hci0/dev_DE:AD:BE:EF:00:00
bluetoothd[15615]: src/device.c:btd_device_ref() 0x7feb52b15680: ref=1
bluetoothd[15615]: src/device.c:device_set_temporary() temporary 1
bluetoothd[15615]: src/device.c:btd_device_ref() 0x7feb52b15680: ref=2
bluetoothd[15615]: plugins/mgmtops.c:mgmt_event() cond 1
bluetoothd[15615]: plugins/mgmtops.c:mgmt_event() Received 10 bytes from management socket
bluetoothd[15615]: plugins/mgmtops.c:mgmt_cmd_complete()
bluetoothd[15615]: plugins/mgmtops.c:mgmt_cmd_complete() stop_discovery complete
bluetoothd[15615]: plugins/mgmtops.c:mgmt_event() cond 1
bluetoothd[15615]: plugins/mgmtops.c:mgmt_event() Received 8 bytes from management socket
bluetoothd[15615]: plugins/mgmtops.c:mgmt_discovering() Controller 0 type 1 discovering 0
bluetoothd[15615]: plugins/mgmtops.c:mgmt_event() cond 1
bluetoothd[15615]: plugins/mgmtops.c:mgmt_event() Received 65 bytes from management socket
bluetoothd[15615]: plugins/mgmtops.c:mgmt_device_connected() hci0 device DE:AD:BE:EF:00:00 connected eir_len 46
bluetoothd[15615]: src/adapter.c:adapter_get_device() DE:AD:BE:EF:00:00
bluetoothd[15615]: src/device.c:device_probe_drivers() Probing drivers for DE:AD:BE:EF:00:00
bluetoothd[15615]: input/manager.c:hid_device_probe() path /org/bluez/15615/hci0/dev_DE:AD:BE:EF:00:00
bluetoothd[15615]: src/device.c:btd_device_ref() 0x7feb52b15680: ref=3
bluetoothd[15615]: input/device.c:input_device_new() Registered interface org.bluez.Input on path /org/bluez/15615/hci0/dev_DE:AD:BE:EF:00:00
bluetoothd[15615]: src/device.c:device_set_temporary() temporary 0
bluetoothd[15615]: src/device.c:btd_device_unref() 0x7feb52b15680: ref=2
Aqui está o registro bluetoothd para o emparelhamento de um telefone celular (o usuário é solicitado a validar um código mostrado nos dois dispositivos):
bluetoothd[15615]: plugins/mgmtops.c:mgmt_start_discovery() index 0
bluetoothd[15615]: Discovery session 0x7feb52b14ca0 with :1.138 activated
bluetoothd[15615]: src/adapter.c:session_ref() 0x7feb52b14ca0: ref=1
bluetoothd[15615]: plugins/mgmtops.c:mgmt_event() cond 1
bluetoothd[15615]: plugins/mgmtops.c:mgmt_event() Received 10 bytes from management socket
bluetoothd[15615]: plugins/mgmtops.c:mgmt_cmd_complete()
bluetoothd[15615]: plugins/mgmtops.c:start_discovery_complete() hci0 type 1 status 0
bluetoothd[15615]: plugins/mgmtops.c:mgmt_event() cond 1
bluetoothd[15615]: plugins/mgmtops.c:mgmt_event() Received 8 bytes from management socket
bluetoothd[15615]: plugins/mgmtops.c:mgmt_discovering() Controller 0 type 1 discovering 1
bluetoothd[15615]: plugins/mgmtops.c:mgmt_event() cond 1
bluetoothd[15615]: plugins/mgmtops.c:mgmt_event() Received 64 bytes from management socket
bluetoothd[15615]: plugins/mgmtops.c:mgmt_device_found() hci0 addr DE:AD:BE:EF:01:01, rssi -52 flags 0x0000 eir_len 44
bluetoothd[15615]: src/adapter.c:session_unref() 0x7feb52b14ca0: ref=0
bluetoothd[15615]: src/adapter.c:session_remove() Discovery session 0x7feb52b14ca0 with :1.138 deactivated
bluetoothd[15615]: src/adapter.c:session_remove() Stopping discovery
bluetoothd[15615]: plugins/mgmtops.c:mgmt_stop_discovery() index 0
bluetoothd[15615]: Stopping discovery
bluetoothd[15615]: src/adapter.c:adapter_create_device() DE:AD:BE:EF:01:01
bluetoothd[15615]: src/device.c:device_create() Creating device /org/bluez/15615/hci0/dev_DE:AD:BE:EF:01:01
bluetoothd[15615]: src/device.c:btd_device_ref() 0x7feb52b17cd0: ref=1
bluetoothd[15615]: src/device.c:device_set_temporary() temporary 1
bluetoothd[15615]: plugins/mgmtops.c:mgmt_create_bonding() hci0 bdaddr DE:AD:BE:EF:01:01 io_cap 0x01
bluetoothd[15615]: src/device.c:bonding_request_new() Requesting bonding for DE:AD:BE:EF:01:01
bluetoothd[15615]: src/device.c:bonding_request_new() Temporary agent registered for DE:AD:BE:EF:01:01 at :1.138:/org/bluez/agent/wizard
bluetoothd[15615]: plugins/mgmtops.c:mgmt_event() cond 1
bluetoothd[15615]: plugins/mgmtops.c:mgmt_event() Received 10 bytes from management socket
bluetoothd[15615]: plugins/mgmtops.c:mgmt_cmd_complete()
bluetoothd[15615]: plugins/mgmtops.c:mgmt_cmd_complete() stop_discovery complete
bluetoothd[15615]: plugins/mgmtops.c:mgmt_event() cond 1
bluetoothd[15615]: plugins/mgmtops.c:mgmt_event() Received 8 bytes from management socket
bluetoothd[15615]: plugins/mgmtops.c:mgmt_discovering() Controller 0 type 1 discovering 0
bluetoothd[15615]: plugins/mgmtops.c:mgmt_event() cond 1
bluetoothd[15615]: plugins/mgmtops.c:mgmt_event() Received 37 bytes from management socket
bluetoothd[15615]: plugins/mgmtops.c:mgmt_device_connected() hci0 device DE:AD:BE:EF:01:01 connected eir_len 18
bluetoothd[15615]: src/adapter.c:adapter_get_device() DE:AD:BE:EF:01:01
bluetoothd[15615]: plugins/mgmtops.c:mgmt_event() cond 1
bluetoothd[15615]: plugins/mgmtops.c:mgmt_event() Received 18 bytes from management socket
bluetoothd[15615]: plugins/mgmtops.c:mgmt_user_confirm_request() hci0 DE:AD:BE:EF:01:01 confirm_hint 0
bluetoothd[15615]: src/adapter.c:adapter_get_device() DE:AD:BE:EF:01:01
bluetoothd[15615]: src/device.c:new_auth() Requesting agent authentication for DE:AD:BE:EF:01:01
bluetoothd[15615]: src/agent.c:agent_request_confirmation() Calling Agent.RequestConfirmation: name=:1.138, path=/org/bluez/agent/wizard, passkey=436733
bluetoothd[15615]: plugins/mgmtops.c:mgmt_confirm_reply() index 0 addr DE:AD:BE:EF:01:01 success 1
bluetoothd[15615]: plugins/mgmtops.c:mgmt_event() cond 1
bluetoothd[15615]: plugins/mgmtops.c:mgmt_event() Received 16 bytes from management socket
bluetoothd[15615]: plugins/mgmtops.c:mgmt_cmd_complete()
bluetoothd[15615]: plugins/mgmtops.c:mgmt_cmd_complete() user_confirm_reply complete
bluetoothd[15615]: plugins/mgmtops.c:mgmt_event() cond 1
bluetoothd[15615]: plugins/mgmtops.c:mgmt_event() Received 32 bytes from management socket
bluetoothd[15615]: plugins/mgmtops.c:mgmt_new_link_key() Controller 0 new key of type 5 pin_len 0
bluetoothd[15615]: src/adapter.c:adapter_get_device() DE:AD:BE:EF:01:01
bluetoothd[15615]: src/event.c:btd_event_link_key_notify() storing link key of type 0x05
bluetoothd[15615]: src/device.c:device_set_bonded() bonded 1
bluetoothd[15615]: src/device.c:device_set_temporary() temporary 0
bluetoothd[15615]: src/adapter.c:adapter_get_device() DE:AD:BE:EF:01:01
bluetoothd[15615]: src/device.c:device_bonding_complete() bonding 0x7feb52b2d270 status 0x00
bluetoothd[15615]: src/device.c:device_bonding_complete() Proceeding with service discovery
bluetoothd[15615]: src/device.c:btd_device_ref() 0x7feb52b17cd0: ref=2
bluetoothd[15615]: src/agent.c:agent_release() Releasing agent :1.138, /org/bluez/agent/wizard
bluetoothd[15615]: plugins/mgmtops.c:mgmt_event() cond 1
bluetoothd[15615]: plugins/mgmtops.c:mgmt_event() Received 16 bytes from management socket
bluetoothd[15615]: plugins/mgmtops.c:mgmt_cmd_complete()
bluetoothd[15615]: plugins/mgmtops.c:pair_device_complete() hci0 DE:AD:BE:EF:01:01 pairing complete status 0
bluetoothd[15615]: src/adapter.c:adapter_get_device() DE:AD:BE:EF:01:01
bluetoothd[15615]: src/device.c:device_bonding_complete() bonding (nil) status 0x00