Dove sono archiviate le chiavi di collegamento bluetooth in Ubuntu 14.10?


10

Sto cercando di impostare chiavi di collegamento bluetooth specifiche per un dispositivo in Ubuntu 14.10 ma non riesco a trovare dove sono archiviate.
Lo scopo è avere un mouse bluetooth funzionante sia in Ubuntu che in Windows senza doverlo ricollegare dopo aver cambiato i sistemi operativi.
Tutte le risposte che ho trovato su AskUbuntu affermano che le chiavi sono archiviate /var/lib/bluetooth/<mac_address>/linkkeyse questo era il caso almeno fino al 13.10, ma nel 14.10 questo file manca da un'installazione desktop pulita e la sua creazione manuale non ha alcun effetto, viene ignorato da bluetoothd.

EDIT: sembra che il mouse non emetta una richiesta di associazione e in questo caso i tasti di collegamento non sono memorizzati. Tuttavia, il collegamento del mouse in Windows e il riavvio in Ubuntu causa l'interruzione della connessione Bluetooth (e il mouse deve essere rimosso e aggiunto nuovamente all'elenco dei dispositivi Bluetooth), quindi è in corso un certo scambio di chiavi / autenticazione che impedisce al il mouse viene condiviso in entrambi i sistemi operativi. La domanda rimane: come posso forzare bluetoothd per salvare e utilizzare i tasti di collegamento salvati quando si collega questo mouse?

Dettagli hardware:

  • Mouse Bluetooth per notebook Microsoft 5000
  • 413c: 8161 Dell Computer Corp. Wireless 365 Bluetooth (Broadcom BCM2046B1)

I due registri seguenti mostrano che per un dispositivo accoppiabile (telefono cellulare) le chiavi sono memorizzate nel file linkkeys; questo non è il caso del mouse. So che le versioni bluetoothd precedenti utilizzavano anche per salvare i tasti di collegamento per i topi, perché ci sono molte risposte / tutorial qui su askubuntu e ubuntuforums sulla copia di linkkey da Windows a Ubuntu allo scopo specifico di condividere un mouse tra i due sistemi operativi.

Ecco il registro bluetoothd per il rilevamento del mouse e la configurazione della connessione:

    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

Ecco il registro bluetoothd per l'associazione di un telefono cellulare (all'utente viene richiesto di convalidare un codice mostrato su entrambi i dispositivi):

    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

Ho il 14.04 e la directory esiste per me, ma l'indirizzo mac è quello del mio bluetooth interno e i linkkeys sono vuoti ...
Fabby,

Avevo 14.04 e aggiornato a 14.10, ora non riesco a trovare la directory. Ho il tuo stesso problema, volendo impostare la chiave di collegamento per un mouse BT.
Alasjo,

Risposte:


3

Dopo un po ', ho finalmente risolto il problema che stavo affrontando. Non ho ancora trovato una risposta alla domanda iniziale (non sono riuscito a determinare dove sono archiviate le chiavi di collegamento per questa particolare combinazione bluez / adattatore / periferica) ma ho scoperto che bluez leggerà il file linkkeys, se presente, e utilizzerà le chiavi nel file.

Pertanto, anche se le chiavi di collegamento potrebbero non essere scritte nel file dopo l'associazione, è possibile sovrascrivere quelle chiavi aggiungendole manualmente al file linkkeys.

È importante che il tipo di chiave sia impostato correttamente, altrimenti la chiave verrà ignorata.

Per riferimento, il tipo di chiave che ha funzionato nel mio caso è mostrato qui: https://askubuntu.com/a/246791/352576


1

Ubuntu 13.10 usa bluez 4.98, 14.04 e 14.10 usa 4.101

Entrambe le versioni sono state compilate con la stessa opzione (--localstatedir = / var)

Sto usando 14.04 e i file ci sono e se rimuovo o aggiungo un dispositivo il file / var / lib / bluetooth / (myadapteraddress) / linkkeys viene aggiornato di conseguenza.

Ho fatto un test su un sistema 14.10, ho aggiunto un dispositivo BT e il file / var / lib / bluetooth / (adapteraddress) / linkkeys è stato creato

Forse stai utilizzando una versione più recente di bluez.

Schema per le nuove versioni di bluez (5 in poi penso):

/var/lib/bluetooth/<adapter address>/<remote device address>/info

Nella documentazione della memorizzazione delle impostazioni per la nuova versione di bluez, ho trovato questo:

http://git.kernel.org/cgit/bluetooth/bluez.git/tree/doc/settings-storage.txt

...

Storage directory structure

There is one directory per adapter, named by its Bluetooth address, which
contains:
 - a settings file for the local adapter
 - an attributes file containing attributes of supported LE services
 - a cache directory containing:
    - one file per device, named by remote device address, which contains device name
 - one directory per remote device, named by remote device address, which contains:
    - an info file
- an attributes file containing attributes of remote LE services
- a ccc file containing persistent Client Characteristic Configuration
  (CCC) descriptor information for GATT characteristics

So the directory structure is:

/var/lib/bluetooth/<adapter address>/

    ./settings
    ./attributes
    ./cache/
        ./<remote device address>
        ./<remote device address>
        ...
    ./<remote device address>/
        ./info
        ./attributes
        ./ccc
    ./<remote device address>/
        ./info
        ./attributes
    ...

...

Info file format

...

[LinkKey] group contains:

  Key           String      Key in hexadecimal format

  Type          Integer     Type of link key

  PINLength     Integer     Length of PIN

...

In ogni caso sembra che bluez dovrebbe archiviare i file in / var / lib / bluetooth

Se si utilizza questo comando

bluetoothd --version

hai 4.101?


1
Sì, la versione bluetoothd è 4.101. La var/lib/bluetoooth/<adapter address>cartella esiste ma non esiste alcun file linkkeys né alcuna sottodirectory. Il dispositivo bluetooth è accoppiato e funzionante, quindi i tasti sono memorizzati da qualche parte ma sicuramente non lì. Forse la versione di Ubuntu memorizza le chiavi da qualche altra parte e sto cercando di scoprire dove. Sto usando un'installazione desktop 14.10 standard, l'associazione effettuata tramite l'indicatore bluetooth, niente di speciale.
ATAKAMA,

1
Mi è appena venuto in mente che alcuni adattatori bluetooth hanno l'archiviazione delle chiavi hardware. Sarebbe possibile per Ubuntu bluetoothd archiviare le chiavi di collegamento solo nella memoria dell'adattatore e non nel filesystem? L'adattatore è: 413c: 8160 Dell Computer Corp. Wireless 365 Bluetooth basato su Broadcom BCM2046
ATAKAMA

Hai provato ad abbinare un altro dispositivo, un cellulare? ... Più tardi proverò su un altro PC con 14.10
J.Serra il

Ho appena associato un telefono cellulare che non è mai stato associato a questo adattatore (né in Ubuntu, né in Windows). Il file linkkeys è stato creato. Quindi ho provato ad accoppiare nuovamente il mouse, è stato accoppiato, ma la chiave del collegamento non è stata aggiunta al file. Come posso ottenere bluetoothd per leggere la chiave di collegamento nel file e non usare quella nell'adattatore (che è presumibilmente ciò che fa)?
ATAKAMA,

Questo è molto curioso ... Forse se elimini il dispositivo in Windows, Ubuntu crea il file.
J.Serra,

0

/ var / lib / bluetooth / {bluetoothaddr} / linkkeys

Dove {bluetoothaddr} è la tua interfaccia bluetooth (dovresti averne solo una, sembra un indirizzo mac)

Il formato del file è {remoteaddr} {chiave di collegamento a 128 bit} {tipo}.

20:12:03:22:EE:0E C21D3A69DEA0A8C629F1BB5D12AEEA79 4 0
00:18:94:68:3E:90 EC02519ED656DB87B7F152E899F8A810 0 4
00:21:3F:3E:2E:6C 948A0EF91FA8E9EB9032CE775BF8E0B0 0 4

Si prega di leggere attentamente il testo della domanda. Quel file non esiste più in un'installazione 14.10. Non ci sono file linkkeys in nessun punto del filesystem. Le chiavi sono memorizzate altrove. La domanda è dove.
ATAKAMA,

Sul mio nuovo laptop su cui ho installato (nessun aggiornamento) 14.10, c'è ancora il file come l'ho descritto. bluetoothd 4.101. Quali sono i messaggi su syslog quando provi ad associare un nuovo dispositivo?
Xavier,

Ho modificato la domanda e aggiunto alcuni registri per confrontare la scoperta e la configurazione della connessione di questo mouse con la configurazione della connessione di un telefono cellulare, i cui tasti di collegamento vengono salvati.
ATAKAMA,

0

In Debian Jessie e suppongo che anche Ubuntu sia possibile impostare manualmente il PIN da usare.

  1. Fai quello che questo post https://askubuntu.com/a/246791/352576 descrive per ottenere la chiave di Windows.
  2. il tuo /var/lib/bluetooth/XX:XX:XX:XX:XX:AA(dov'è XX: ... :AAil mac dell'adattatore BT del tuo PC) dovrebbe contenere una dir con il mac del tuo mouse / tastiera BT (lo rappresenterò come XX: ... :BF, e configurazione dei file, e impostazioni.
  3. all'interno XX: ... BFc'è un file di infoproprietà di root, con permessi rw per root. Nessun altro permesso .-- I contenuti dovrebbero essere:

    [LinkKey] 
    Key=A7XXXXXXXXXXXXXXXXXXXXXXXXXXXX89 
    Type=4
    PINLength=0
    
    [General]
    Name=yourMouseName
    Class=0x002580
    SupportedTechnologies=BR/EDR;
    Trusted=true
    Blocked=false
    Services=00001000-0000-1000-8000-00805f9b34fb;00001124-0000-1000-8000-00805f9b34fb;00001200-0000-1000-8000-00805f9b34fb;
    
    [DeviceID]
    Source=2
    Vendor=1133
    Product=45069
    Version=1792
    

    Si noti che la lunghezza della chiave è lunga 16 byte.

incollare i file di linkkeys in queste directory non mi ha aiutato, anche se li ho lasciati lì.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.