LINUX.ORG.RU

Не могу подключить bluetooth сканер к Ubuntu 20.04

 , , , ,


0

1

Никак не могу подключить сканер штрихкода к Ubuntu 20.04. Подключаю через USB донгл, он в системе определяется и работает, телефон через него подключается и работает, сканер обнаруживается pairing получается сделать, а вот подключить не выходит. подключается и тут же отваливается. В blueman-applet пишет Coinnection failed: failed to get rfcomm chanel.

Сканер работает через виртуальный COM порт, а портов никаких нет ls /dev/rf* дает только /dev/rfkill. Раньше порты настраивались через файл /etc/bluetooth/rfcomm.conf, но теперь как я понял этот функционал выпелен и как теперь все это настраивать я решительно не представляю. В настройках апплета ничего по этому поводу нет.

Подскажите куда копать, а то уже 2 день на месте топчусь и не могу сдвинутся с места. Если что то ещё посмотреть то напишите.

Если запускать «руками» rfcomm connect hci0 00:20:E0:7F:43:0A 1 то все подключается и порт создается.

Сделал костыль для временного решения проблемы: Не могу подключить bluetooth сканер к Ubuntu 20.04 (комментарий)

Ответ на: комментарий от vitruss

Дак я же написал, что не могу подключить это устройство, оно отваливается при попытке подключения. И я даже не представляю где смотреть почему оно отваливается. В syslog ничего интересного не появляется. А как дебаг посмотреть я не знаю.

zhukovia ()

Вот что пишет blueman-applet –loglevel debug при попытке подключения

blueman-applet 09.27.38 DEBUG    Base:74 do_g_properties_changed: /org/bluez/hci0/dev_00_20_E0_7F_43_0A {'Address': '00:20:E0:7F:43:0A', 'AddressType': 'public', 'Name': 'SF51 Scanner 0020e07f430a', 'Alias': 'SF51 Scanner 0020e07f430a', 'Class': 525568, 'Paired': True, 'Trusted': True, 'Blocked': False, 'LegacyPairing': False, 'Connected': False, 'UUIDs': ['00001101-0000-1000-8000-00805f9b34fb'], 'Adapter': '/org/bluez/hci0', 'ServicesResolved': False}
blueman-applet 09.27.38 INFO     RecentConns:161 notify    : <Device.Device object at 0x7fde68718b00 (blueman+bluez+Device+Device at 0x1569bf0)> 00001101-0000-1000-8000-00805f9b34fb
blueman-applet 09.27.38 INFO     RecentConns:91 initialize: rebuilding menu
Failed to connect to sdp
blueman-applet 09.28.08 INFO     BluezAgent:216 _on_request_pin_code: Agent.RequestPinCode
blueman-manager 09.28.08 WARNING  ManagerDeviceMenu:117 fail      : fail g-dbus-error-quark: GDBus.Error:org.freedesktop.DBus.Error.Failed: _blueman.RFCOMMError: Failed to get rfcomm channel
 (0)
blueman-applet 09.28.08 INFO     BluezAgent:207 _on_cancel: Agent.Cancel 
zhukovia ()

Ещё вот такой вывод: systemctl status bluetooth

Смущают строки: RFCOMM server failed но что с этим сделать не знаю

     Loaded: loaded (/lib/systemd/system/bluetooth.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2020-07-10 15:38:54 +07; 4min 35s ago
       Docs: man:bluetoothd(8)
   Main PID: 3482 (bluetoothd)
     Status: "Running"
      Tasks: 1 (limit: 43309)
     Memory: 3.5M
     CGroup: /system.slice/bluetooth.service
             └─3482 /usr/lib/bluetooth/bluetoothd

Jul 10 15:39:17 lserver2 bluetoothd[3482]: Endpoint unregistered: sender=:1.68 path=/MediaEndpoint/A2DPSink/sbc
Jul 10 15:39:17 lserver2 bluetoothd[3482]: Endpoint unregistered: sender=:1.68 path=/MediaEndpoint/A2DPSource/sbc

Jul 10 15:39:23 lserver2 bluetoothd[3482]: RFCOMM server failed for Headset Voice gateway: rfcomm_bind: Address already>
Jul 10 15:39:23 lserver2 bluetoothd[3482]: RFCOMM server failed for :1.35/Profile/HSPHSProfile/00001108-0000-1000-8000->

Jul 10 15:39:23 lserver2 bluetoothd[3482]: Endpoint registered: sender=:1.35 path=/MediaEndpoint/A2DPSink/sbc
Jul 10 15:39:23 lserver2 bluetoothd[3482]: Endpoint registered: sender=:1.35 path=/MediaEndpoint/A2DPSource/sbc
Jul 10 15:39:23 lserver2 bluetoothd[3482]: Endpoint registered: sender=:1.68 path=/MediaEndpoint/A2DPSink/sbc
Jul 10 15:39:23 lserver2 bluetoothd[3482]: Endpoint registered: sender=:1.68 path=/MediaEndpoint/A2DPSource/sbc
Jul 10 15:39:45 lserver2 bluetoothd[3482]: Endpoint unregistered: sender=:1.68 path=/MediaEndpoint/A2DPSink/sbc
Jul 10 15:39:45 lserver2 bluetoothd[3482]: Endpoint unregistered: sender=:1.68 path=/MediaEndpoint/A2DPSource/sbc
zhukovia ()
Ответ на: комментарий от zhukovia

а ты странный...

тебе в первом ответе сказали

сделать правило Udev, чтобы создавать ком-порт при блутус подключении

и сам говоришь, что после команды

rfcomm connect hci0 00:20:E0:7F:43:0A 1 

всё работает.

Headset Voice gateway

«это кто?». у вас в логах какие-то проблемы с звуковыми профилями блютуза.

anonymous ()
Ответ на: а ты странный... от anonymous

а ты странный…

Да нет, я не странный. Если бы мне было понятно бы не продолжал здесь задавать вопросы. Какое правило создать то? Я же пояснил вроде, что НЕ могу создать это самое блутус подключение (т.к. оно отваливается тут же), поэтому о каком udev правиле идет речь, мне не понятно. Я знаю как создать правило которое при появлении устройства /dev/rfcomm0 создает линк, например на COM6 /dev/ttyS5. Например:

KERNEL=="rfcomm0", SUBSYSTEM=="tty", ATTR{address}=="00:20:e0:7f:43:0a", ATTR{channel}=="1", ACTION=="move", SYMLINK+="ttyS5", RUN+="/etc/bluetooth/stty_SF51.sh"

Но как это мне поможет? Проблема в том, что у меня не создается /dev/rfcomm0, поэтому какое правило создавать я не понимаю, просветите убогого если знаете.

А то получается что сказали «Да это вообще не проблема, надо просто настроить и все будет работать!». Но это вообще ни разу ни помощь, а издевка какая то.

После команды rfcomm connect hci0 00:20:E0:7F:43:0A 1 все работает означает только то, что устройство подключается и данные с него передаются (т.е. оно может работать в этой системе). Но оно не работает так как нужно.

При использовании blueman-applet не получится ни подключить ни отключить устройство, а нужно будет открыть терминал и запустить эту команду, закрывать терминал нельзя, т.к. соединение отвалится. Вы же не предлагаете всерьез пользователей заставлять это делать. Или вы считаете приемлемым создавать подобные конструкции из «говна и палок»?

zhukovia ()

Странное дело получилось. Я уже раз десять переустанавливал систему, я так пробую разные настройки, параллельно записывая, что сделал для того чтобы потом «начисто» установить и настроить сервер не делая и не ставя ничего лишнего. Та вот, в одну из таких установок у меня заработал этот чертов сканер, он отключался и подключался (из blueman-applet), удалялся и заново подключался, во общем вел себя так как и должно быть устройство /dev/rfcomm0 создавалось. Но после очередной переустановки все вернулось опять в начало, он не работает.

Что послужило триггером я понятия не имею, я вроде ничего такого не делал и не устанавливал. Одно стало понятно, что на этом железе и этом софте сканер может работать! Только непонятно что может ему мешать это делать.

Что еще я могу упускать? Где почитать про это? Ну неужели никто здесь не разбирался никогда в bluetooth стеке и не знает как он устроен в Ubuntu 20.04?

zhukovia ()
Ответ на: а ты странный... от anonymous

«это кто?». у вас в логах какие-то проблемы с звуковыми профилями блютуза.

Возможно это телефон, я его подключаю для проверки того, что донгл работает нормально. Если это как то может навести на мысль, то и пишите об этом, а то совсем не понятно, что с этим знанием дальше делать.

Что еще запустить или посмотреть для уточнения данного вопроса?

zhukovia ()
Ответ на: комментарий от zhukovia

нет, всё же "странный"

После команды rfcomm connect hci0 00:20:E0:7F:43:0A 1 все работает означает только то, что устройство подключается и данные с него передаются (т.е. оно может работать в этой системе). Но оно не работает так как нужно.

работает означает только то, что устройство подключается и данные с него передаются … Но оно не работает так как нужно

это ты сейчас разъясняешь, в стартовом сообщении было просто «работает» – и как это надо было понимать?!

Дальше больше: в начале ты писал «порт не создаётся», теперь «отваливается подключение». Мне одному кажется, что это не одно и тоже самое? Создание порта без udev не обходиться (либо я чего-то вообще не понимаю) – можно через udevadm смотреть что и где пойдёт не так. Опять же это один из вариантов, может и не поможет… Но подключение (спаривание) устройств блютуз выполняется «самим стеком» – можно только из терминала «повторить» всю процедуру (я вот сильно сомневаюсь, что все «шаги» blueman-apple воспроизведутся – для полного совпадения надо его код «курить»; или нет?)

А то получается что сказали «Да это вообще не проблема, надо просто настроить и все будет работать!». Но это вообще ни разу ни помощь, а издевка какая то.

«Каков вопрос – таков ответ» надеюсь, ты понимаешь, что никто специально не желал тебя задеть. (из отвечавших)

Вы же не предлагаете всерьез пользователей заставлять это делать

предполагалось переложить это на udev, но это была только версия (как теперь стало известно).


Странное дело получилось. Я уже раз десять переустанавливал систему, я так пробую разные настройки, параллельно записывая, что сделал для того чтобы потом «начисто» установить и настроить сервер не делая и не ставя ничего лишнего. Та вот, в одну из таких установок у меня заработал этот чертов сканер, он отключался и подключался (из blueman-applet), удалялся и заново подключался, во общем вел себя так как и должно быть устройство /dev/rfcomm0 создавалось. Но после очередной переустановки все вернулось опять в начало, он не работает.

логов, конечно, нет. между тем, между установками могли какой-то патч снять/наложить могло произойти всё что угодно.

Возможно это телефон, я его подключаю для проверки того, что донгл работает нормально

ну не знаю. может это только мой личный опыт, но то, что одно конкретное устройство bluetooth работает нормально никак не значит, что другое устройство bluetooth будет работать нормально. всё зависит от доброй воли производителей и разработчиков программной части стека. увы, но это так.

anonymous ()
Ответ на: нет, всё же "странный" от anonymous

Я понимаю что мне здесь никто ничего не должен и понимаю что для получения правильного ответа надо задать правильный вопрос. Но поймите, пожалуйста, и меня. Я уже несколько дней безуспешно «долблюсь башкой в стену» и никак не могу понять как запустить этот чертов сканер. Я никак не могу найти как настраивать этот bluez? на его сайте www.bluez.org я не нашел ничего полезного (может плохо искал?). Я вообще не понимаю как настраивать bluetooth сегодня в linux, вся информация что есть в интернете это настройка через /etc/bluetooth/rfcomm.conf и /etc/bluetooth/hcid.conf. Раньше я через них и настраивал и все было понятно, а как сейчас не понимаю.

zhukovia ()
Последнее исправление: zhukovia (всего исправлений: 1)
Ответ на: нет, всё же "странный" от anonymous

Дайте хоть направление куда копать, а то уже руки опускаются от безисходности. :(

Логов, с того раза как все работало, естественно я не сохранил. И понимаю что могло что угодно произойти, но главное, что это устройство МОЖЕТ работать у меня. Вопрос теперь что сделать для этого?

zhukovia ()
Ответ на: нет, всё же "странный" от anonymous

Дальше больше: в начале ты писал «порт не создаётся», теперь «отваливается подключение» Порт именно не создается. Под отваливается подключение я понимал то что при попытке соединения в bluetoothctl строка ненадолго меняется с

[bluetooth]# на

[SF51 Scanner 0020e07f430a]#

но порта в /dev/rfcomm0 все равно не появляется.

zhukovia ()
Ответ на: нет, всё же "странный" от anonymous

По поводу правил UDEV. Посмотрел udevadm --debug monitor, что происходит при попытке подключения в сканеру, только вот как это поможет

KERNEL[4459.256732] add      /devices/pci0000:00/0000:00:1d.3/usb5/5-1/5-1:1.0/bluetooth/hci0/hci0:41 (bluetooth)
UDEV  [4459.259759] add      /devices/pci0000:00/0000:00:1d.3/usb5/5-1/5-1:1.0/bluetooth/hci0/hci0:41 (bluetooth)
KERNEL[4464.231006] remove   /devices/pci0000:00/0000:00:1d.3/usb5/5-1/5-1:1.0/bluetooth/hci0/hci0:41 (bluetooth)
UDEV  [4464.233161] remove   /devices/pci0000:00/0000:00:1d.3/usb5/5-1/5-1:1.0/bluetooth/hci0/hci0:41 (bluetooth)

А вот если делать rfcomm connect hci0 00:20:e0:7f:43:0a 1 то так

KERNEL[5735.273805] add      /devices/pci0000:00/0000:00:1d.3/usb5/5-1/5-1:1.0/bluetooth/hci0/hci0:42 (bluetooth)
UDEV  [5735.276666] add      /devices/pci0000:00/0000:00:1d.3/usb5/5-1/5-1:1.0/bluetooth/hci0/hci0:42 (bluetooth)
KERNEL[5735.669121] add      /devices/virtual/tty/rfcomm0 (tty)
KERNEL[5735.669171] move     /devices/pci0000:00/0000:00:1d.3/usb5/5-1/5-1:1.0/bluetooth/hci0/hci0:42/rfcomm0 (tty)
UDEV  [5735.670132] add      /devices/virtual/tty/rfcomm0 (tty)
UDEV  [5735.672343] move     /devices/pci0000:00/0000:00:1d.3/usb5/5-1/5-1:1.0/bluetooth/hci0/hci0:42/rfcomm0 (tty)
zhukovia ()
Ответ на: нет, всё же "странный" от anonymous

Есть же какие то файлы настроек? Не может быть что теперь их нет, в линуксе так не бывает. Только где они и как настраивать не знаю. У меня складывается впечатление что эмуляция COM порта просто отключена по-умолчанию. Но как ее включить?

Раньше использовалось конструкция sdptool add SP для создания порта при загрузке.

Еще я пробовал менять файл /etc/systemd/system/dbus-org.bluez.service добавив ExecStartPost=/usr/bin/sdptool add SP

В выводе systemctl status bluetooth добавилась строка

Jul 11 16:41:15 lserver2 sdptool[6532]: Serial Port service registered

но это ничего не поменяло.

Вот еще может поможет в UUID нет ничего похожего на serial port

[bluetooth]# show
Controller 00:0A:3A:5B:41:2E (public)
        Name: lserver2
        Alias: lserver2
        Class: 0x001c0000
        Powered: yes
        Discoverable: no
        DiscoverableTimeout: 0x000000b4
        Pairable: yes
        UUID: A/V Remote Control        (0000110e-0000-1000-8000-00805f9b34fb)
        UUID: PnP Information           (00001200-0000-1000-8000-00805f9b34fb)
        UUID: Message Access Server     (00001132-0000-1000-8000-00805f9b34fb)
        UUID: Audio Sink                (0000110b-0000-1000-8000-00805f9b34fb)
        UUID: Message Notification Se.. (00001133-0000-1000-8000-00805f9b34fb)
        UUID: Phonebook Access Server   (0000112f-0000-1000-8000-00805f9b34fb)
        UUID: A/V Remote Control Target (0000110c-0000-1000-8000-00805f9b34fb)
        UUID: OBEX Object Push          (00001105-0000-1000-8000-00805f9b34fb)
        UUID: IrMC Sync                 (00001104-0000-1000-8000-00805f9b34fb)
        UUID: OBEX File Transfer        (00001106-0000-1000-8000-00805f9b34fb)
        UUID: Vendor specific           (00005005-0000-1000-8000-0002ee000001)
        UUID: Audio Source              (0000110a-0000-1000-8000-00805f9b34fb)
        UUID: Headset                   (00001108-0000-1000-8000-00805f9b34fb)
        UUID: Headset AG                (00001112-0000-1000-8000-00805f9b34fb)
        Modalias: usb:v1D6Bp0246d0535
        Discovering: no
zhukovia ()
Ответ на: комментарий от zhukovia

Я вообще не понимаю как настраивать bluetooth сегодня в linux

боюсь, что больше так сделать нельзя. тебе нужно понять как это делается в ubuntu 20.04. это только мои необоснованные догадки, но других у меня нет :(

Раньше я через них [/etc/bluetooth/rfcomm.conf и /etc/bluetooth/hcid.conf] и настраивал и все было понятно, а как сейчас не понимаю.

похоже в ubuntu 20.04 есть etc/bluetooth/main.conf и он настраивается не ручной правкой (опять мои голословные утверждения). в bluez есть ещё 2 конфига, но основной «подозреваемый» main.conf.

последний раз пакеты bluetooth и bluez изменялись в ubuntu 20.04 в апреле 2020. если ты экспериментировал с установками позже (я полагаю так и было), то источник проблемы скорее всего именно в настройках. дополнительная сложность

в одну из таких установок у меня заработал этот чертов сканер, он отключался и подключался (из blueman-applet), удалялся и заново подключался, во общем вел себя так как и должно быть устройство /dev/rfcomm0 создавалось

когда телефон подключаешь, для него /dev/rfcomm* создаются? подключить сканер после телефона пробовал? мало ли… может что-то с энергосбережением (просто догадка).

ладно. всё равно ничего дельного в голову не приходит.

anonymous ()
Ответ на: комментарий от anonymous

когда телефон подключаешь, для него /dev/rfcomm* создаются? подключить сканер после телефона пробовал? мало ли… может что-то с энергосбережением (просто догадка)

Пробовал в разных комбинациях, телефон-сканер, сканер-телефон, и все вместе. Разницы никакой.

Занялся я этими настройками действительно после апреля 2020, так что скорее всего в этом и проблема.

С одной стороны Линукс это хорошо, но с другой стороны подобное отношение линукс сообщества очень удручает. Я про то, что меняют что то, а то что это может сломать то что раньше работало, мало кого волнует. Если это что то поломанное встречается не сильно часто. И с техподдержкой не сильно то себя утруждают (инструкции). Нет я конечно понимаю что это бесплатно и никто никому не обязан, но когда вот так долбишься неделю и не можешь ничего настроить и понимаешь что в принципе то работает, но что нужно настроить и где никто не скажет и нигде не прочитаешь. То становится грустно.

Но все равно большое вам спасибо за участие.

zhukovia ()
Последнее исправление: zhukovia (всего исправлений: 1)

Ничего сделать не смог, пришлось сделал костыль, может надо будет кому. Сделал 2 сервиса. Первый, для создания порта (при старте системы). Второй, для переподключения сканера если он вдруг отвалился.

/etc/systemd/system/rfcomm_create.service

[Unit]
    Description=Create rfcomm port
    After=bluetooth.service

[Service]
    User=root
    Group=dialout
    Type=forking
    ExecStart=/etc/bluetooth/rfcomm_create
    TimeoutSec=0
    StandardOutput=tty
    RemainAfterExit=yes
    SysVStartPriority=99

[Install]
    WantedBy=multi-user.target

/etc/systemd/system# more rfcomm_watch.service

[Unit]
    Description=RFCOMM service
    After=bluetooth.service
    After=rfcomm_create.service
    Requires=bluetooth.service

[Service]
    User=root
    Group=dialout
    ExecStart=/usr/bin/rfcomm watch hci0

[Install]
    WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable rfcomm_watch
systemctl enable rfcomm_create

В этом скрипте я удаляю существующий COM6. Так как если этого не сделать, то не получится создать ссылку rfcomm0. СОМ6 это порт где 1С будет искать сканер

/etc/bluetooth/rfcomm_create

#!/bin/bash
#Удаляем COM6 если он есть, иначе не получится создать ссылку на rfcomm0
sudo rm /dev/ttyS5

#Создаем /dev/rfcomm0
sudo rfcomm bind rfcomm0 00:20:E0:7F:43:0A

ln -s rfcomm0 /dev/ttyS5

exit 0

Теперь после перезагрузки появляется два устройства ls -l /dev/rfcomm0 и ls -l /dev/ttyS5

crw-rw---- 1 root dialout 216,   0 Jul 13 09:54 /dev/rfcomm0
и
lrwxrwxrwx 1 root dialout     7 Jul 13 09:54 /dev/ttyS5 -> rfcomm0

И теперь при попытке подключиться к порту COM6 из 1С происходит подключение сканера. Естественно сканер должен быть предварительно спарен с компьютером!

Из апплета blueman-applet не получается ни подключить ни отключить сканер, возможно только из самой 1С. То что сканер подключился видно и из апплета.

zhukovia ()
Ответ на: комментарий от zhukovia

Дополню немного. Удалось заставить работать в Иксах, для этого в апплете (blueman-applet) нужно было выключить один из плагинов NMDUNS и все заработало. Почему не знаю, но может кому пригодится.

zhukovia ()