Де в Ubuntu 14.10 зберігаються клавіші посилання Bluetooth?


10

Я намагаюся встановити спеціальні клавіші Bluetooth для пристрою в Ubuntu 14.10, але я не можу знайти, де вони зберігаються.
Мета полягає в тому, щоб миша Bluetooth працювала як в Ubuntu, так і в Windows, не потребуючи повторної пари після переключення операційних систем.
Усі відповіді, які я знайшов на AskUbuntu, стверджують, що ключі зберігаються, /var/lib/bluetooth/<mac_address>/linkkeysі це було так щонайменше до 13.10, але в 14.10 цей файл відсутній у чистій установці на робочий стіл, і створення його вручну не має ефекту, воно ігнорується bluetoothd.

EDIT: Схоже, що миша не видає запит на пару, а в цьому випадку клавіші посилань не зберігаються. Однак підключення миші в Windows, а потім перезавантаження в Ubuntu спричиняє збій Bluetooth-з'єднання (і мишу потрібно видалити та знову додати до списку пристроїв Bluetooth), тому напевно відбувається деякий обмін / аутентифікація ключів, що запобігає миші від спільного використання в обох ОС. Залишається питання, як я можу змусити Bluetoothd зберігати та використовувати збережені клавіші посилання під час підключення цієї миші?

Деталі обладнання:

  • Миша для ноутбука Microsoft Bluetooth 5000
  • 413c: 8161 Dell Computer Corp. Wireless 365 Bluetooth (Broadcom BCM2046B1)

Два журнали нижче показують, що для добового пристрою (мобільного телефону) ключі зберігаються у файлі ключів зв’язку; це не стосується миші. Я знаю, що старіші версії Bluetoothdd використовуються для збереження клавіш посилань і для мишей, тому що тут багато відповідей / підручників на askubuntu та ubuntuforums про копіювання посилальних ключів з Windows на Ubuntu для конкретної мети спільного використання миші між двома ОС.

Ось журнал Bluetoothd для виявлення та налаштування з'єднання миші:

    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

Ось журнал Bluetoothd для сполучення мобільного телефону (користувачеві пропонується перевірити код, показаний на обох пристроях):

    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

У мене 14.04, і каталог існує для мене, але mac-адреса є моїм внутрішнім Bluetooth та linkkeys порожнім ...
Fabby

У мене було 14.04 і оновлено до 14.10, зараз я не можу знайти каталог. У мене те саме питання, що і ви, бажаючи встановити ключ посилання для миші BT.
Alasjo

Відповіді:


3

Через деякий час я нарешті вирішив питання, з яким я стикався. Я все ще не знайшов відповіді на початкове запитання (я не міг визначити, де зберігаються ключі посилання для цієї конкретної комбінації bluez / адаптер / периферія), але я дізнався, що bluez прочитає файл linkkeys, якщо він присутній, і використовуватиме ключі у файлі.

Отже, хоча ключі посилань можуть не бути записані у файл після створення пари, можна змінити ці клавіші, вручну додавши їх у файл посилальних ключів.

Важливо, щоб тип ключа був встановлений правильно, інакше ключ буде проігноровано.

Для довідки, тип ключа, який працював у моєму випадку, показаний тут: https://askubuntu.com/a/246791/352576


1

Ubuntu 13.10 використовує bluez 4.98, 14.04 і 14.10 використовує 4.101

Обидві версії були складені з одним і тим же варіантом (--localstatedir = / var)

Я використовую 14.04, і файли є, і якщо я видаляю або додаю пристрій, файл / var / lib / bluetooth / (myadapteraddress) / linkkeys файл оновлюється відповідно.

Я зробив тест на системі 14.10, додав BT-пристрій і створив файл / var / lib / bluetooth / (адаптераддрес) / linkkeys

Можливо, ви використовуєте новішу версію bluez.

Схема нових версій bluez (5 думаю далі):

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

У документації зберігання налаштувань для нової версії bluez я знайшов таке:

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

...

У будь-якому випадку здається, що bluez повинен зберігати файли в / var / lib / bluetooth

Якщо ви використовуєте цю команду

bluetoothd --version

ви отримуєте 4.101?


1
Так, версія bluetoothd 4,101. var/lib/bluetoooth/<adapter address>Папка існує , але немає linkkeys файлу, ні підкаталог. Пристрій Bluetooth є парним і працює, тому клавіші зберігаються десь, але точно не там. Можливо, версія Ubuntu зберігає ключі десь в іншому місці, і я намагаюся з’ясувати, де. Я використовую стандартну установку на робочому столі 14,10, з'єднання через індикатор Bluetooth, нічого фантазійного.
АТАКАМА

1
Мені просто прийшло в голову, що деякі адаптери Bluetooth мають апаратне зберігання ключів. Чи можливо, щоб Ubuntu bluetoothd зберігав ключі посилання тільки в пам'яті адаптера, а не у файловій системі? Адаптер: 413c: 8160 Dell Computer Corp. Wireless 365 Bluetooth на базі Broadcom BCM2046
ATAKAMA

Ви спробували розібрати інший пристрій, мобільний телефон? ... Пізніше я спробую на іншому ПК з 14.10
J.Serra

Я щойно спарив мобільний телефон, який ніколи не поєднувався з цим адаптером (ні в Ubuntu, ні в Windows). Файл зв’язкових ключів створено. Потім я спробував парувати мишу ще раз, вона спарилася, але ключ її посилання не був доданий у файл. Як змусити Bluetoothd прочитати посилання у файлі, а не використовувати той, який знаходиться в адаптері (що, імовірно, це робить)?
АТАКАМА

Це дуже цікаво ... Можливо, якщо ви усунете пристрій у Windows, ubuntu створює файл.
J.Serra

0

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

Де {bluetoothaddr} - ваш інтерфейс Bluetooth (у вас має бути лише один, він виглядає як mac-адреса)

Формат файлу - {remoteaddr} {128-бітний ключ посилання} {type}.

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

Будь ласка, уважно прочитайте текст запитання. Цей файл більше не існує при встановленні 14.10. Ніде файлових ключів файлової системи немає. Клавіші зберігаються десь в іншому місці. Питання де.
АТАКАМА

На моєму новому ноутбуці, де я встановив (без оновлення) 14.10, все ще є файл, як я його описав. bluetoothd 4.101. Що таке повідомлення в syslog, коли ви намагаєтесь з'єднати новий пристрій?
Ксав'є

Я відредагував це запитання та додав кілька журналів, щоб порівняти налаштування виявлення та підключення цієї миші та налаштування підключення мобільного телефону, клавіші посилання якого зберігаються.
АТАКАМА

0

У Debian Jessie & я припускаю, що також Ubuntu, ви можете вручну встановити PIN-код для використання.

  1. Зробіть те, що описано в цій публікації https://askubuntu.com/a/246791/352576, щоб отримати ключ Windows.
  2. ваш /var/lib/bluetooth/XX:XX:XX:XX:XX:AA(де XX: ... :AAзнаходиться mac BT-адаптера вашого ПК) повинен містити dir з mac вашої BT миші / клавіатури (я представлятиму це як XX: ... :BF, і налаштування файлів, і налаштування.
  3. всередині XX: ... BFє файл, що infoналежить root, з правами rw для root. Ніяких інших дозволів .-- вміст не повинен бути:

    [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
    

    Зверніть увагу, що довжина ключа - 16 байт.

приклеювати файли зв’язкових ключів у цих довідниках мені не допомогло - хоч я і залишив їх там добре.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.