- Запускает программу bt-connect, которую ещё надо написать.заменить на запуск puppybt для начала
заменить на запуск puppybt для началаАбсолютно не проблема. Но мне puppybt не нравится.
но зачем это писать на си...Ну напиши на ассемблере, если не нравится.
Кстати, a2dp-alsa для puppybt у тебя есть?вроде бы есть в модуле.
Но мне puppybt не нравится.тебе любой скрипт не нравится кроме тех что ты сам написал. Не замечал?
Файлообмен, звук, интернет (маловероятно из-за низкой скорости). Вот от этого и надо плясать.puppybt от этого и пляшет. в bluez-tray все функции не запихнуть, и других графических вариантов сейчас нету.
тебе любой скрипт не нравится кроме тех что ты сам написал.Свои тоже не нравятся.
У тебя bluez-4?не у меня, у автора :) да конечно это все для 4 версии, без всяких пульсов, системдэ и прочего
без всяких пульсов, системдэ и прочегоименно так!
На скриншоте: так выглядит недописанный bt-connectc вкладками реально удобнее было бы. Обрати внимание как в puppybt сделана передача звука, т.е. две кнопки - отправить звук на устройство и рядом отправить звук на звуковую карту локальную т.е. вопросов не возникает "А как потом обратно вернуть", тоже самое с раздачей интернета Tethering и c ком-портом
c вкладкамиЗдесь вкладки по количеству найденных устройств. Не было ничего под рукой чтобы показать. На каждой вкладке генерируются кнопки sdptool browse, только то, что устройство поддерживает. Мне кажется так понятнее.
На скриншоте: так выглядит недописанный bt-connectя так понимаю это на С написано, чем в этом случае можно тебе помочь? давай тогда сделаем законченный модуль bluetooth.pfs и будем требовать включить в во все iso
это на С написаноНа C только bluez-tray, bt-connect на gtkdialog.
ну тогда его на гитхаб и пилим-пилимОно уже год как там лежит (https://github.com/DdShurick/BlueC/blob/master/bt-connect).
отправку файлов быА мне бы звук одной кнопкой :)
соспряжение устройствВот тут я не знаю даже как лучше? Логично было-бы после сканирования и выбора сопрягаемого устройства, но проще сразу забить PIN в bluetooth-agent. Кстати, в bluez-5 агента нет, всё через bluetoothctl, но он консольный, наподобие telnet, к нему GUI не прикрутишь.
оставь пока то что естьСлишком оно сырое :(
Кстати, в bluez-5 агента нет, всё через bluetoothctl, но он консольный, наподобие telnet, к нему GUI не прикрутишь.я тебе писал какой пример есть по управлению им из скриптов.
я тебе писал какой пример есть по управлению им из скриптов.Пробовал, не работает.
нужен ли на данном этапе bluez-5 ?Не знаю, но звук мне удалось отправить только с bluez-5 (без pulseaudio).
что тогда будет делать этот bluez-tray?Индикатор состояния bluetooth и одновременно кнопка запуска bt-connect или puppybt.
Если меню не будетМеню можно и оставить, но что в него включать?
паринг?? Это уже компетенция bt-connect. Сейчас есть вкл/выкл, видим/невидим и о программе.
покажет отличия в виде diffЭто я вижу. Как получить конечный результат?
[ "$(pidof hidd)" ] || (hidd && echo "hidd started"; sleep 1)это ты сразу готовишь чтоб мышки-клавиатуры подключались?
[ -d ~/bluetooth-share ] || mkdir ~/bluetooth-shareможет на ~/downloads оставить?
/usr/libexec/obexd --ftp --opp -a -r ~/bluetooth-share #я так понял этот скрипт выполняется при загрузке? думаю включать сразу возможность приема файлов ненадо лишний демон в системе ненужен, включать либо при включении видимости, либо отдельной кнопкой в меню трея "Включить прием файлов"
это ты сразу готовишь чтоб мышки-клавиатуры подключались?Это вместо
hid=`ps | grep "hidd" | grep -v "grep hidd"`
if [ "$hid" == "" ]; then
hidd --server -n&
sleep 1
fi
я так понял этот скрипт выполняется при загрузке?Да, причём присутствует в трёх экземплярах: /root/Startup/bluetooth, /home/live/Startup/bluetooth и /usr/bin/manage-bluetooth.
думаю включать сразу возможность приема файлов ненадо лишний демон в системе ненуженТогда может быть лучше оставить мой вариант /lib/udev/bluez.sh?
#!/bin/sh
[ $1 ] || exit
[ "$(/bin/pidof bluetoothd)" ] || /usr/sbin/bluetoothd -u
#ждём запуск иксов (костыль)
until [ -f /tmp/dsp ]; do /bin/sleep 1; done
export DISPLAY=$(/bin/cat /tmp/dsp)
/usr/bin/bluez-tray "$1" "$2"
Тогда может быть лучше оставить мой вариант /lib/udev/bluez.sh?ну да твой ставим. c DISPLAY там все нормально?
c DISPLAY там все нормально?У меня нормально, но это потребовало добавить в ~/.icewm/startup строку echo $DISPLAY > /tmp/dsp. Хотелось бы универсальности. Например
export DISPLAY=$(ls /tmp/.X11-unix | sed 's/X/:/')
дней через 10Так быстро ???
Хотелось бы универсальности. НапримерЧто мешает?
export DISPLAY=$(ls /tmp/.X11-unix | sed 's/X/:/')
Что мешает?Стартовать будет рано, до WM :(
ожидать появления /tmp/.X11-unix в цикле?Я пробовал, панель не успевает запуститься.
блин не могуВот и у меня от bluez-4 уже крыша едет. Который день бьюсь, а звук отправить не получается. Что только не пробовал, каких инструкций не перечитал, без толку. Bluez-5 - запросто с помощью "bluealsa &" и bluetoothctl.
Пулреквесты смотри хотя быСмотрел. Ты туда добавил команды из puppybt. Как это собрать в полноценный скрипт, кроме как руками?
оформить модулем быОно покомандно, из консоли, отнюдь не всё работает, а ты модуль. Например:
# hciconfig hci0 up
# sdptool browse
Inquiring ...
Failed to connect to SDP server on 00:11:67:6A:05:5D: Operation now in progress
# sdptool browse
Inquiring ...
Failed to connect to SDP server on 00:11:67:6A:05:5D: No route to host
У автора оно как-то работало в таком виде.У автора возможно, у меня нет.
bluez_tray не хочет работать :(В PRA или PR? rfkull точно 1? Иконки /usr/share/pixmaps/bluetooth*.png на месте?
В PRA или PR?PRA и PR тоже щас проверил - не срабатывает.
rfkull точно 1?да
Иконки /usr/share/pixmaps/bluetooth*.png на месте?да
не срабатывает.В смысле, иконка висит, но ничего не срабатывает? У меня с bluez-5.45 то же самое.
Какой командой запускаешь в консоли?
# bluez_tray hci0 rfkill1
# ls -d /sys/class/bluetooth/hci0/rfkill?
/sys/class/bluetooth/hci0/rfkill1
# bluez-tray hci0 rfkill2
# echo $?
1
Попробуй, я в чистом PR подключал каталог mount -o remount,append:bluez-tray4-0.1/ / из git.ну и все, приплыли. тоже не работает. Чистый PR.
Вот сделал парочку скриншотов.Значит у тебя bt-connect запустился? Через bluez-tray или консоль?
Через bluez-tray или консоль?через консоль конечно.
gtk_timeout_add(interval, Update, NULL);
Update(NULL);
gtk_main();
return 0;
gtk_timeout_add(interval, Update, NULL);
/* Update(NULL);*/
printf ("%s\n", "MAIN LOOP");
gtk_main();
return 0;
Стало печатать MAIN LOOP но все равно программа завершается без ошибок.Правильно, ты же исключил функцию Update
/* Update(NULL);*/
if ((fp = fopen(statefile,"r"))==NULL) { printf ("%s\n", "no statefile"); exit(1); }
да выдает что нету addressfile, я так понимаю что это /sys/class/bluetooth/hci0/ и что-то я там не нахожу addressРаньше ты писал, что name тоже нету. Интересно. Откуда тогда hciconfig эти данные берёт.
и в подкаталогах тоже нету.
# udevadm info -a -p /sys/class/bluetooth/hci0
...........
looking at device '/devices/pci0000:00/0000:00:1d.1/usb3/3-1/3-1:1.0/bluetooth/hci0':
KERNEL=="hci0"
SUBSYSTEM=="bluetooth"
DRIVER==""
ATTR{name}=="-0"
ATTR{type}=="BR/EDR"
ATTR{address}=="00:11:67:bf:03:0c"
............
Раньше ты писал, что name тоже нету. Интересно. Откуда тогда hciconfig эти данные берёт.понятия не имею. в /sys/class/bluetooth я их не вижу либо они размазаны по отдельным файлам
!!!!Саша, не кричи пожалуйста
понятия не имеюВот и я понятия не имею. А в bluez5 отсутствует hciconfig :(
!!!!КРИК ЭТО ВОТ а восклицательные знаки это вот !!!! три дня так-то уже бьюсь, неужели нет повода для волнений?
А в bluez5 отсутствует hciconfigвобще его не обязательно брать из bluez5
Саша, попробуй вот такое ругательство, сработает ли у тебяя не понимаю что с этим делать. hciconfig работает и показывает то что нужно, к чему эти извраты с dbus
к чему эти извраты с dbusСаша, не я это придумал. На разрабов блюза в инете уже неприличными словами ругаются. Мне польза от dbus совершенно непонятна.
pair и connect не работают без предварительного scan.
#!/bin/bash
bluetoothctl << EOF
power on
EOF
Разрабы просто издеваются. Придётся брать hciconfig от 4 версии.ничего они не издеваются, все логично пока что.
ничего они не издеваются, все логично пока что.Саша, а ты поглубже вникни, когда вникнешь сразу сникнешь.
надо попробовать использовать везде hcitoolOk
перенес bt-connect в репозитарий PuppyBTOk
#это будет работать некорректно при 2 и более Local bluetooth devices
if [ ! "`rfkill list | grep Bluetooth`" ]; then err_msg "Local bluetooth device not found"; exit 1; fi
if [ ! "`rfkill list | grep -A 2 Bluetooth | grep Hard | grep no`" ]; then
err_msg "Local bluetooth device hard blocked"; exit 1; fi
[ "`rfkill list | grep -A 1 Bluetooth | grep Soft | grep no`" ] || /usr/bin/rfkill unblock bluetooth
if ! [ $1 ]; then
HCI_DEV=`rfkill list | awk '/Bluetooth/ {print $2}' | tr -d \:`
if [ "`hcitool dev | grep -v Devices`" = "" ]; then
if ! hciconfig $HCI_DEV up; then
err_msg "Local bluetooth device not found"; exit 1
fi
fi
HCI_ADDR=`hcitool dev | awk '!/Devices:/ {print $2}'`
HCI_RFKILL=`ls -1 /sys/class/bluetooth/$HCI_DEV | grep rfkill`
else
HCI_DEV=$1
HCI_RFKILL=$2
fi
Например в стационарный комп вставили usb-bluetooth адаптер.У меня только такой и есть.
# rfkill list bluetooth
0: hci0: Bluetooth
Soft blocked: no
Hard blocked: no
Убрал addressfile из bluez-tray, посмотри.Ты не доверяешь своему коду? зачем переименовал под другое имя? хотя бы вручную перенес из моего файла исправления ошибок
sdptool browse $BDA > /tmp/${BDA}-info.lst || continue
echo "<vbox>" >> /tmp/panel
awk -F[\(\)] '/0x11/ {print $2}' /tmp/${BDA}-info.lst | sort -u | while read S
do
CH=$(grep -A4 $S /tmp/${BDA}-info.lst | awk '/Channel/ {print $2}')
case $S in
0x1101) echo "<frame Serial Port>
чтобы уже был запущен bluetoothdУ меня udev запускает bluetoothd.
в скрипте только проверять
Возможно чем-то поможет...Т.к гномовская вещь, может тянут много по зависимостям. Ussp-push нормально отправлял.
В http://www.opennet.ru/opennews/art.shtml?num=46796 есть bluetooth-sendto (бинарник, про исходники мне не известно)
Сам не проверял (не на чем) и глубоко не ковырял
bluetooth-sendtoЭто отсюда (https://github.com/GNOME/gnome-bluetooth).
GConf, dbus-glib, libhalСаша, гораздо больше. Я пытался собрать.
У меня udev запускает bluetoothd.bluez.sh который на git bluez5 не запускает, строка закоментирована.
dbus-send --system --print-reply --dest=org.bluez /org/bluez/hci0 org.freedesktop.DBus.Properties.Get string:org.bluez.Adapter1 string:Address
dbus-send --system --print-reply --dest=org.bluez / org.freedesktop.DBus.ObjectManager.GetManagedObjects
НАШЕЛ /sys/kernel/debug/bluetooth/hci0У меня /sys/kernel/debug/ пустой :(
# ./bdaddr
Manufacturer: Integrated System Solution Corp. (57)
Device address: 00:11:67:BF:03:0C
Если ориентируешься на bluez5, то придётся осваивать dbus.Как будто в bluez4 его нет.
#include <stdlib.h>
#include <sys/ioctl.h>
/*Эти добавить из bluez-5.45/lib/ */
#include "bluetooth.h"
#include "hci.h"
static struct hci_dev_info di;
int main(void) {
int ctl;
/* Open HCI socket */
if ((ctl = socket(AF_BLUETOOTH, SOCK_RAW, BTPROTO_HCI)) < 0) {
perror("Can't open HCI socket.");
exit(1);
}
if (ioctl(ctl, HCIGETDEVINFO, (void *) &di)) {
perror("Can't get device info");
exit(1);
}
printf("%s\t%x\n", di.name, di.bdaddr);
close(ctl);
return 0;
}
хрен знает что.Это потому что каша в голове.
ты на bluez5 нацелилсяBluez5 у меня работает, Bluez4 - нет.
Зато работает независимо от bluetoothd, hciconfig hci0 up и dbus-daemon.а шо толку, без bluetoothd ты все равно ничего нормального не сделаешь, так что чем раньше он будет запущен - тем лучше.
dbus-send --system --print-reply --dest=org.bluez /org/bluez/hci0 org.freedesktop.DBus.Properties.Set string:org.bluez.Adapter1 string:Powered variant:boolean:true
static void cmd_up(int ctl, int hdev, char *opt)
{
/* Start HCI device */
if (ioctl(ctl, HCIDEVUP, hdev) < 0) {
if (errno == EALREADY)
return;
fprintf(stderr, "Can't init device hci%d: %s (%d)\n",
hdev, strerror(errno), errno);
exit(1);
}
}
static void cmd_down(int ctl, int hdev, char *opt)
{
/* Stop HCI device */
if (ioctl(ctl, HCIDEVDOWN, hdev) < 0) {
fprintf(stderr, "Can't down device hci%d: %s (%d)\n",
hdev, strerror(errno), errno);
exit(1);
}
}
чем раньше он будет запущен - тем лучше.Раньше, чем через udev только через init.d при старте.
Раньше, чем через udev только через init.d при старте.udev вполне достаточно.
Всё через ioctl, никакого dbus. И вообще непонятно, зачем он нужен?я не знаю. Народ все еще не разобрался как им жить без rfcomm.
утилита btmgmtНадо посмотреть подробнее, но на первый взгляд вещь хорошая. У тебя она есть? А то могу поделиться.
Предлагаю разделить функционалЯ с самого начала так и задумывал.
У тебя она есть? А то могу поделиться.у меня есть.
# ./hci_info
Device hci0:
00:11:67:BF:03:0C
UP RUNNING
system("urxvt -e /usr/bin/bluetoothctl");
if ((system("urxvt -e /usr/bin/bluetoothctl &")) == 0) system("/usr/bin/puppybt &");
Встроил infomsg, up и down. Добавил в меню pscan, iscan, piscan, noscan.Почему у меня меню ПКМ не фиксируется на экране? пункт выбрать можно только пока кнопка мыши зажата.
Почему у меня меню ПКМ не фиксируется на экране?Вот этого я знать не могу, ибо твоё железо тайна великая есть.
И убери уже запятую в номере версии, бесит аж.О! А я и не вижу. Убрал.
/usr/bin/rxvt: Нет такого файла или каталогаИ куда ты его спрятал? Bluetoothctl можно запустить только в консоли. Может совсем убрать его вызов?
либо пиши который братьБери с гита.
Вот этого я знать не могу, ибо твоё железо тайна великая есть.ноутбук Asus k55vj, панель lxpanel 0.6.2
И куда ты его спрятал?честное слово, он в /usr/local/bin вызов его пока оставь, puppybt у меня еще только умеет анимацию крутить без декораций :))
lxpanel 0.6.2Скорее всего это. У меня традицонный IceWM.
вызов его пока оставьУже убрал :( . Bluetoothctl по моему для тех, кто дружит с консолью.
Скорее всего это. У меня традицонный IceWM.надо лечить.
надо лечить.Сделал.
там есть меню Выход?Нет.
надо налаживатьЗнать бы как?
Подделываться под PRA не имею ни малейшего желания.ненадо подделываться, при компиляции бинарники можно размещать где угодно например в /usr/bin
Во всех нормальных системах /usr/sbin/rfkillа в нормальных программах хорошим тоном считается автоопределение наличия нужного бинарника и где он лежит, если местоположение важно.
в нормальных программахДля этого нужен нормальный программист, а я всего лишь быдлокодер.
этот самый rfkill будет в этом модуле.Вообще-то rfkill должен быть в базе, ибо он блокирует не только bluetooth, а wifi wlan bluetooth uwb ultrawideband wimax wwan gps fm nfc
Для этого нужен нормальный программист, а я всего лишь быдлокодер.пишешь, значит учишься. Пиши правильно, не ходи по скользкой дороге одного из здешних форумчан из трех букв.
Вообще-то rfkill должен быть в базетем более надо делать автообнаружение для внешних программ, и применительно к rfkill - его отсутствие не особо должно влиять на работу программы , если блютус разблокирован!!!
надо делать автообнаружение для внешних программДавно есть - $PATH, но при запуске от udev он другой, поэтому приходится писать полный путь. Кроме того, в PRA есть ссылка /usr/sbin -> /usr/bin, так что обязано работать. Можно конечно взять часть кода из pfkill.c, но зачем дублировать?
не ходи по скользкой дороге одного из здешних форумчанВ противоположную иду вроде-бы.
из трех букв:D
Давно есть - $PATH, но при запуске от udev он другойбуду помнить
unsigned int interval = 1000; /*update interval in milliseconds*/
Пора разбираться с парингом устройствПора, но у меня паринг получается только с bluetoothctl :(
надо запускать сканирование чтобы устройство добавились в dbusЭто я уже заметил. Мне кажется, что dbus больше мешает, чем помогает. Зачем его придумали :( ?
Зачем его придумали :( ?мне кажется что они пришельцы с Марса.
надо запускать сканирование чтобы устройство добавились в dbusчто-то нестабильно срабатывает,запускаю сканирование, один раз сработало, потом остановил и больше не запускается уже. Телефон свой вижу в dbus, удалить не могу, точнее удаление вроде проходит, но в дереве устройств я его все равно вижу - может d-feet косячит конечно, повторное удаление пишет что нечего удалять.
мне кажется что они пришельцы с Марса.Похоже.
# puppybt
Unable to start discovery. status 0x0c (Not Supported)
# btmgmt find
Unable to start discovery. status 0x0c (Not Supported)
int ba2str(const bdaddr_t *ba, char *str) {
return sprintf(str, "%2.2X:%2.2X:%2.2X:%2.2X:%2.2X:%2.2X",
ba->b[5], ba->b[4], ba->b[3], ba->b[2], ba->b[1], ba->b[0]);
}
В чем суть запускаться как defaultbtmanager?Можно вписать любой BT-manager без перекомпиляции. Так, например, запускается defaultbrowser и другие. Так, по моему, удобнее.
локализацию вернутьПопробую.
ПридётсяПосмотрим.
при отсутствии defaultbtmanager пытаться запустить puppybtСделал.
Не вижу в нем смыслаНе нравится hcitool, смотри scan (https://github.com/DdShurick/BlueC/blob/master/scan).
смотри scan.работает. желательно переименовать в bt-scan чтоли или hci-scan, еще бы регистрировала найденное в dbus - вобще бы хорошо было.
переименовать в bt-scanНе проблема.
еще бы регистрировала найденное в dbusЕсли не удастся его обойти, придётся :(
Если не удастся его обойти, придётся :(это зависит от реализации передачи звука по большей части. У меня команда включения сканирования StartDiscovery не срабатывает при вызове из dbus-send, хотя везде пишут что через нее запускается поиск устройств. А еще bluetoothctl вроде паринг устройств нормально делает, а если устройства нет в dbus, то паринг придется по другому делать
вот это вот close(ctl); что делает?Закрывает сокет.
/* Open HCI socket */
if ((ctl = socket(AF_BLUETOOTH, SOCK_RAW, BTPROTO_HCI)) < 0) {
perror("Can't open HCI socket.");
exit(1);
}
............
close(ctl);
return 0;
}
зачем ты сокет открываешь?А как получить информацию? Через dbus? Ну его нафиг.
ошибок при завершении не выпадаетОт udev может не писать в консоль. Сделаю bluez-tray.log.
не сыпет ошибокСаша, посмотри сейчас.
говорят что все гуд и сканирование завершаетсяЭто у них, а у тебя?
Удалось собрать sdptool v5.46.ты его обрезал чтоли? бинарник мелкий стал :)
ты его обрезал чтоли?Чуть-чуть.
3946:// case XML_VIEW:
3948:// convert_sdp_record_to_xml(rec, 0, doprintf);
3949:// break;
................
4186:// case XML_VIEW:
4188:// convert_sdp_record_to_xml(rec, 0, doprintf);
4189:// break;
интерфейсы можно из dbus получитьМожно, но мне не нравится. Через dbus командовать может любой пользователь, а это небезопасно. Без dbus не нужне и bluetoothd.
Без dbus не нужне и bluetoothd.а как ты паринг сделаешь? давай обсудим метод решения иначе не годится.
Через dbus командовать может любой пользователь, а это небезопасно.очень неожиданный аргумент, не приводи его больше.
не приводи его больше.Саша, тебе нравятся "дырки" в системе? Кроме того, вместо прямой команды используется хитрая окружная схема: поданная на бинарник команда через gdbus передаётся даймону dbus-daemon, который по своей шине предаёт даймону bluetoothd, который транслирует команду на выполнение. Тебе нравится такая чехарда?
Но надо код писать а на что ориентироваться непонятно.Вот именно. Запутали всё, сволочи.
method return time=1501702506.436909 sender=:1.1 -> destination=:1.20 serial=166 reply_serial=2мне это надо бы в переменную загнать со значением false или true, я пока в скрипте вписал grep -o, но оно не работает что-то
variant boolean false
в bluez-tray.c проверь вот это strcat(cmd,"/usr/bin/bt-connect ");Вот тут надо решить, как запускать puppybt, с аргументом hci? или без? Сейчас эта строка не работает, потому-что в действии по клику указана прямая команда system("/usr/bin/puppybt &");
но оно не работает что-тоУ меня тоже перестало почему-то :(
как запускать puppybt, с аргументом hci? или без?я думаю из bluez-tray можно с параметрами запустить, чтоб надежнее, а в самом скрипте оставить определение HCI_DEV на случай если запускать просто из терминала.
У меня тоже перестало почему-то :(там сложная строка с кодом sed внутри, наверное из-за этого, надо как-то разбивать на более простые строки.
я думаю из bluez-tray можно с параметрами запуститьЯ тоже так думаю.
У меня тоже перестало почему-то :(
там сложная строка с кодом sed внутриРазобрался, sed ни при чём, надо было вначале включить inquiry. В конце строки " | egrep -o 'false|true' ", и можно писать в переменную.
Grep -e не поддерживается?grep -e и egrep практически одно и то же.
вешает систему при пробужденииУ меня нет.
# systemd-sleep suspend
Suspending system...
System resumed.
#
Stop нет. Через bluetoothctl scan on/off работает, но если вначале запустить через dbus-send, то отключать не хочет.все верно . разработчики сказали что это нормально, фича, и на самом деле все завершается.
вешает систему при пробуждениивешает. возможно зависит от способа подключения адаптера.
У меня нет.
есть у тебя /usr/lib/pm-utils/sleep.d/bluetooth или что-то подобное?Такого нет.
разработчики сказали что это нормально, фича, и на самом деле все завершается.Мне кажется врут, продолжает работать в режиме "то потухнет, то погаснет", я имею в виду inquiry.
он успокоится?Не успокаивается. Только отключение.
но учти что устарелоНовое == давно забытое старое :)
я вот про rfcomm думаю, как без него теперьНикуда не делся, просто спрятали
Саша, сравни пожалуйста с bt-scan, что лучше работает?одинаково ищут.
Никуда не делся, просто спряталиоднажды он исчезнет или уберут протокол, там внутри не видно, rfcomm через bluetoothd напрямую работает или дергает что то еще?
Разобрался, sed ни при чём, надо было вначале включить inquiry. В конце строки " | egrep -o 'false|true' ", и можно писать в переменную.не могу DEV_PAIR в скрипте правильно получить :(
не могу DEV_PAIR в скрипте правильно получить :(А что выдаёт? Я заменил Device$N на постоянный Device1, тогда стало выдавать все устройства.
# find . -name rfcomm.c
./monitor/rfcomm.c
./tools/parser/rfcomm.c
./tools/rfcomm.c
А что выдаёт? Я заменил Device$N на постоянный Device1, тогда стало выдавать все устройства.у меня второго устройства нету, оно что второму тоже присваивает имя Device1? посмотри код, кавычки "" я там не потерял?
и ничего не понятно :(вот ./tools/rfcomm.c могут выкинуть в любой момент
кавычки "" я там не потерял?Нет, там другое. Вот так работает (строки 230 - 236):
grep -o '..:..:..:..:..:..' /tmp/btscan.lst | sed 's/:/_/g' | while read BDA
do
#check pair-nonpair device status
echo "<vbox>" >> /tmp/panel
#N=$[N+1]
DEV_PAIR=`dbus-send --system --print-reply --type=method_call --dest=org.bluez /org/bluez/$HCI_DEV/dev_$BDA org.freedesktop.DBus.Properties.Get string:org.bluez.Device1 string:Paired | egrep -o 'true|false'`
можно приступать к написанию функции паринга. Как оно делается?Вот это и надо узнать. В bluetoothctl это вкомпилено так (client/main.c 1392 - 1407):в /lib/hci.c есть
hci.c:2505:int hci_read_simple_pairing_mode(int dd, uint8_t *mode, int to)
hci.c:2528:int hci_write_simple_pairing_mode(int dd, uint8_t mode, int to)
адрес устройства?Ты имеешь в виду $BDA? Вообще-то подставляется в <action>command $BDA &</action>, но если закладок несколько? Надо подумать
но если закладок несколько? Надо подуматьага, должен быть выход
Вообще-то подставляется в <action>command $BDA &</action>, но если закладок несколько?то в каждой закладке будет свой отличающийся BDA. нормально решение. Какой синтаксис вызова функции с параметром? например функцию PAIR
if [ $DEV_PAIR = "true" ]; then
echo "<frame>
<hbox>
<text>
<label>Unpaired</label>
</text>
<button>
<action>\"UNPAIR $BDA &\"</action>
</button>
</hbox>
</frame>" >> /tmp/panel
elif [ $DEV_PAIR = "false" ]; then
echo "<frame>
<hbox>
<text>
<label>Paired</label>
</text>
<button yes>
<action>\"PAIR $BDA &\"</action>
</button>
</hbox>
</frame>" >> /tmp/panel
fi
<action>\"UNPAIR $BDA &\"</action>нет, не годится.
будет же записано UNPAIR $BDAНет, "UNPAIR 12:12:34:45:56:67 &", я проверял.
...............
<frame>
<hbox>
<text>
<label>Paired</label>
</text>
<button yes>
<action>"PAIR BC:B1:F3:46:7C:44 &"</action>
</button>
</hbox>
</frame>
.............
надо наверное как-то по другому запускать?У меня этим заведует udev:
# Run helper every time a Bluetooth device appears
# On remove actions, bluetoothd should go away by itself
ACTION=="add", KERNEL=="rfkill?", ATTR{type}=="bluetooth", RUN+="bluez.sh %s{name} %k"
#!/bin/sh
#без аргументов не запускаем
[ $1 ] || exit
#запускаем bluetoothd если не запущен
[ "$(/bin/pidof bluetoothd)" ] || /usr/sbin/bluetoothd &
#ждём иксы
until [ -f /tmp/dsp ]; do /bin/sleep 1; done
#добавляем переменные
export DISPLAY=$(/bin/cat /tmp/dsp)
export $(/bin/grep LANG= /etc/profile)
/usr/bin/bluez-tray "$@"
# ./scan
Scanning ...
BC:B1:F3:46:7C:44 C3520
01 00
[ Net Capture Obex Phone ] Cell Phone
20:A9:0E:72:AF:9C ALCATEL ONETOUCH 2012D
01 00
[ Net Capture Obex Audio Phone ] Cell Phone
00:11:67:6A:05:5D SPARKLE
01 00
[ Render Audio ] Loudspeaker Audio/Video
Что из этого полезного можно поиметь?думаю пока ничего
Сильно покоцал начало puppybt, посмотри, приемлемр ли это для тебя?ты так и не осилил pull request? ну сложно же читать отличия :(
Сильно покоцал начало puppybt, посмотри, приемлемр ли это для тебя?забрал изменения, только rfkill unblock сделал более конкретным
ddshurick, выявлена проблема в кодеТы про это?
N=$[$(ls -1 /sys/class/bluetooth | wc -l) - 1]
N=$[$(ls -1 /sys/class/bluetooth | grep -v \: | wc -l) - 1]
N=$[$(find /sys/class/bluetooth -name hci? | wc -l) - 1]
в пользу связки obexd + bt-obexДа, obexd входит в основной пакет bluez-5, требует libical-2.0.0.
загрузил на github версию puppybt-5.2Взял. Мне кажется, что ~/Startup/bluetooth это лишнее, udev вполне справляется. Достаточно костылика /tmp/dsp.
udev вполне справляется. Достаточно костылика /tmp/dspвсе таки запускать графическую программу надо средствами оболочки ибо в случае если вообще нет окружения xorg так оно и будет проверять /tmp/dsp. Bluetoothd стартовать самое то что надо из udev.
если вообще нет окружения xorgТогда bluetoothctl.
так оно и будет проверять /tmp/dspОграничить число циклов.
у меня проблема с кодом, надо из вывода типа "514 fsfsdf sdfsdf -s -b /mnt/bluetooth TEMP=/tmp" получить /mnt/bluetoothВариантов множество, например:
# echo "514 fsfsdf sdfsdf -s -b /mnt/bluetooth TEMP=/tmp"|tr ' ' '\n'|grep '/mnt'
/mnt/bluetooth
# echo "514 fsfsdf sdfsdf -s -b /mnt/bluetooth TEMP=/tmp"|sed 's/.* \//\//;s/.* ~\//~\//;s/.* $HOME\/$HOME/\//'|cut -f1 -d' '
/mnt/bluetooth
# echo "514 fsfsdf sdfsdf -s -b ~/bluetooth TEMP=/tmp"|sed 's/.* \//\//;s/.* ~\//~\//;s/.* $HOME\/$HOME/\//'|cut -f1 -d' '
~/bluetooth
# echo "514 fsfsdf sdfsdf -s -b $HOME/bluetooth TEMP=/tmp"|sed 's/.* \//\//;s/.* ~\//~\//;s/.* $HOME\/$HOME/\//'|cut -f1 -d' '
/home/live/bluetooth
[ "$EXIT" = "Cancel" -o "$EXIT" = "abort" -o "$HCI_DEV" = "" ] && err_msg "Error!"Надо не сообщение об ошибке, а использовать первое найденное устройство типа hci0
yad-0.26.1-1-i686.tar.gz - чего такой древний? Точно проверял, что с ним работает?у меня только такой в списке пакетов, на яндексе вобще модуля не видно никакого
Причем для него нужен еще xpupsay или notifyd или т.п.я думаю это у них есть в дистрибутивах.
В итоге - выложенный pfs можно пробовать в ПРА?я его там и пробую. Но не подключать на горячую, только через перезагрузку.
Прошу всех обладателей блютуза подключиться к тестированию в ПРАx64 жеж ты чего.
gtkdialog - в скрипте : насколько я помню в пупи gtkdialog3 gtkdialog4 в зависимости от версииэто не наши проблемы.
https://slackware.pkgs.org/14.2/slackonly-i486/yad-0.38.1-i586-1_slonly.txz.html под 32 и 64 gtk2ну вот и обновляй в дистрибутиве, мне щас зачем оно
# puppybt
Scanning ...
20:A9:0E:72:AF:9C ALCATEL ONETOUCH 2012D
BC:B1:F3:46:7C:44 C3520
Error org.freedesktop.DBus.Error.UnknownObject: Method "Get" with signature "ss" on interface "org.freedesktop.DBus.Properties" doesn't exist
/usr/bin/puppybt: line 294: [: =: ожидается использование унарного оператора
/usr/bin/puppybt: line 307: [: =: ожидается использование унарного оператора
bluetoothd[4448]: No cache for BC:B1:F3:46:7C:44
** (gtkdialog:4651): ERROR **: gtkdialog: Error in line 82, near token '</notebook>': syntax error
/usr/bin/puppybt: line 410: 4570 Завершено gtkdialog -c --program=process
/usr/bin/puppybt: line 410: 4651 Ловушка трассировки/останова gtkdialog --program=show_bt --center
Error! Error!
/usr/bin/puppybt: line 294: [: =: ожидается использование унарного оператора
/usr/bin/puppybt: line 307: [: =: ожидается использование унарного оператора
У тебя устройство имя с пробелами имеет. Это недопустимо.Разве имя где-то используется?
не отрабатывает DEV_PAIRМожно взять в кавычки "$DEV_PAIR", проблему не решит, но ошибка уйдёт.
на второй запуск нормальноУ меня тоже нестабильно, похоже, что связано с импульсной работой inquiry. Вот сейчас вообще зависло, /tmp/BC:B1:F3:46:7C:44-info.lst:
Failed to connect to SDP server on BC:B1:F3:46:7C:44: Operation now in progress
Разве имя где-то используется?на вкладке используется (имя вкладки) и при монтировании точка монтирования по имени задается
Можно взять в кавычки "$DEV_PAIR", проблему не решит, но ошибка уйдёт.ну это тоже вариант, просто информации не будет о том что спарено или нет
aplay -D bluealsa:HCI=hci0,DEV=00:11:67:6A:05:5D,PROFILE=a2dp Downloads/sumerki.wav
mpg123 -a bluealsa:HCI=hci0,DEV=00:11:67:6A:05:5D,PROFILE=a2dp http://radio.retro-retro.ru:80/
alsa не видит bluealsa и как зарегистрировать непонятно.
aplay -D bluealsa:HCI=hci0,DEV=00:11:67:6A:05:5D,PROFILE=a2dp Downloads/sumerki.wavвыдает сообщение что устройство не найдено но играет? я просто поток на телефон отправляю, может он у меня в динамике и голосит, а я не слушаю.
Как это организовать чтобы удобно для использования было? программку в трее или отдельное окно и т.п.?Панель или трей - зависит от программы , личных предпочтений, DE и т.п.
есть ли возможность показывать меню не при щелчке а при наведении курсора на значек?Нигде такого не встречал. Везде при наведении - popup. Плохая идея. На gtkdialog наверное можно сделать через обработку события
Переделал на трей - mpvgui - поудобнее.вроде годится
нет ли значков размером 48х48Возьми здесь (https://github.com/DdShurick/BlueC).
ddshurick куда пропал?В школу пошёл.
не использовать sdptool browseДа.
# sdptool browse 00:11:67:6A:05:5D
Failed to connect to SDP server on 00:11:67:6A:05:5D: Invalid exchange
sdptool records 11:11:11:11:11:11 показал сервисы на устройствеУ меня нет
# sdptool records 00:11:67:6A:05:5D
Failed to connect to SDP server on 00:11:67:6A:05:5D: Invalid exchange
echo devices | bluetoothctl покажетНет
# echo devices | bluetoothctl
[NEW] Controller 00:11:67:BF:03:0C PuppyBT [default]
Agent registered
[bluetooth]# devices
Agent unregistered
[DEL] Controller 00:11:67:BF:03:0C PuppyBT [default]
#
из DBUS через ManagedObjects попробоватьНе хочется, но придётся.
при пробуждении ноутбука из ждущего режимаУ меня выдаёт сначала INIT потом DOWN, хотя усыплял в UP.
из DBUS через ManagedObjects попробоватьтут есть сложности. если у меня устройств в наличии нет, но ранее они были подключены, то GetManagedObjects покажет их т.к. они есть в дереве dbus. А нафиг они нам нужны если фактически их нет.
Не хочется, но придётся.
из этой лапши надо формировать вкладки.Насчёт лапши ты прав, лапша гигантская. Интересно, чего они там обкурились? Вот поэтому с Dbus и не хочется связываться.
надо делать гибридный вариантНадо делать свой, но ума не хватает.
ну из С обращения к dbus даже удобнее. Но пока хотябы сделать в скрипте. Вобщем щас нужен bt-scan без имён устройств в выводе, а там уже научим и из dbus анализировать.надо делать гибридный вариантНадо делать свой, но ума не хватает.
Но пока хотябы сделать в скрипте.А куда спешить? Похвастаться?
нужен bt-scan без имён устройств в выводеЧто мешает
bt-scan | awk '{print $1}'
ну из С обращения к dbus даже удобнее.Вот и надо с этим разобраться, размотать весь клубочек до конца.
Вобщем щас нужен bt-scan без имён устройств в выводе
хотя я бы хотел просто дописать туда недостающие строки с устройствамиСам себе не противоречишь? Если убрать имена из btscan.lst, то запутаешься что есть что. Что сделать без имён, btscan.lst или выхлоп? А что ты хочешь дописать вообще непонятно.
Что сделать без имён, btscan.lst или выхлоп? А что ты хочешь дописать вообще непонятно.а это от недостатка опыта естественно. Но раз уж у нас все движения в коде завязаны на btscan.lst, то в нем и надо делать без имен.
Попробую обрезать sdptool.c до минимально необходимого (Service Name, Channel).Это ничем не поможет в плане построения списка устройств.
Это ничем не поможет в плане построения списка устройств.?? В puppybt из вывода "sdptool browse $BDA" берётся только шестнадцатеричный номер устройства $S и Channel $CH. Это можно вывести сразу, без лишней лапши. Для соединения нам нужно всего лишь $BDA и $CH.
bt-scan его не видитbluetoothctl видит?
видит. Но он видит и без сканирования, берет инфу из dbus.bt-scan его не видитbluetoothctl видит?
Failed to connect to SDP server on 00:11:67:6A:05:5D: Invalid exchange
- делаю Bluetoothctl> connectвот это и нужно в первую очередь обойти, ибо дальше просто не пойдёт работа скрипта, и уже не важно, видит sdptool что-то или не видит.
bt-scan перестаёт видеть наушники
Перевел определение сервисов на dbus. Костыльненько наверное через промежуточный файл в /tmp, но работает четко.То, что работает, хорошо, то, что dbus, плохо, здесь я не помощник, ибо считаю его излишеством.
Саша, сильно на меня не рассчитывай, мы с внучкой нахватали двоек по русскому, надо исправлять :(ну вот как так можно что-то делать? пуллреквест висит уже 27 дней для тебя на гитхабе. Я представляю каково внучке приходится с таким необязательным дедом :((
Саша, сильно на меня не рассчитывай, мы с внучкой нахватали двоек по русскому, надо исправлять :(ну вот как так можно что-то делать? пуллреквест висит уже 27 дней для тебя на гитхабе. Я представляю каково внучке приходится с таким необязательным дедом :((
- Поиск устройств с учетом информации из dbusНе нравится мне этот dbus, не через него ли bluetooth взламывают?
- сетевое соединение через блютус (нет устройств для тестирования)Можно попробовать на моём телефоне.
- Поиск устройств с учетом информации из dbusсделано. И не так уж сложно в принципе.
Выложен модуль версии 5.4В iso пра не пора ставить?
Нет наверное.Выложен модуль версии 5.4В iso пра не пора ставить?
Выложен модуль версии 5.4Куда выложен? Пришел блютуз модуль Orico BTA-403, хочу спарить его с бт стерео-ресивером за 100р с али.В винде все гут, передает все аудио из системы на 2 метра до колонок.
На гитхаб выложен.Как его найти?
Наверно здесь: https://github.com/DdShurick/BlueCнайн
Не смогу собрать, дайте инструкцию или готовый пфс.ненадо ничего собирать
PraLight 6407-1709.6407
::) Тоесть для 64 Pra нет возможности настроить BT-соединение?в связи с вновь открывшимися фактами, сообщаю, что модуля для х64 пока нет.
Надеюсь, что вы "смогёте" в х64. Поставил пра ретро 32... там тоже проблемы.dbus нету? странно. ps -A| grep dbus чего говорит?
Модуль лежит в папке и грузится с системой.судя по цвету твоего терминала, ты что от пользователя его пытался стартовать? bluetoothd от пользователя не будет стартовать.
будет ли там работать запуск из /usr/live/startupНаверное ~/startup ? Не будет. Лучше перенести в /etc/xdg/autostart/*.desktop. Тогда в любом линуксе будет работать
Лучше перенести в /etc/xdg/autostart/*.desktopгде тогда лучше разместить скрипт для запуска? /usr/bin наверное не самое лучшее место
ddshurick - выложи на гитхаб файл oui.hВ нём всего одна строка
char *batocomp(const bdaddr_t *ba);
Я при компиляции подключаю Bluez_DEV и компилирую с опцией -lbluetoothэтот файл oui.h не входит в DEV модуль bluez. Он лежит в исходниках bluez но не устанавливается по make install.
ddshurick - выложи на гитхаб файл oui.h
Обновил scan.c и simplescan.c, сравни.ты издеваешься? там 80% кода переписано!
ты издеваешься?Ни разу.
там 80% кода переписано!Разве так много?
# ./scan
Scanning ...
BC:B1:F3:46:7C:44 C3520
1 0 2
[ Net Capture Obex Phone ] Cell Phone
00:11:67:6A:05:5D SPARKLE
1 0 2
[ Render Audio ] Loudspeaker Audio/Video
SPARKLE
[ Render Audio ] Loudspeaker Audio/Video
ALCATEL ONETOUCH 2012D
[ Net Capture Obex Audio Phone ] Cell Phone
C3520
[ Net Capture Obex Phone ] Cell Phone
но я не смогу связать это с анализом dbusА он нужен?
Как твоя утилита просканирует невидимое, но подключенное устройство?Пока никак. Я это уже заметил. Ответ надо искать в коде btmgmt. Только вот какая необходимость сканировать подключенное устройство?
Если ты читаешь только первое предложение, я могу писать короткими.Я читаю всё, но отвечаю не сразу. Тугодум понимаешь ли.
без конкретных цифр сервисов типа 110е.Чем имена хуже?
Объясняю - чтобы отключить.Понял.
Цифры хранятся в dbus и чтобы анализировать они нужны.Я хочу обойти dbus.
Чем ты там занимаешься, я не понимаюМного чем, длинный список получится, но к Puppy это не относится.
я уже все это давно обработал и все работаетЗамечательно.
Других проблем прям нету чтоли?Навалом, но ну их
Ты не обойдешь dbus.Вот и интересно попробовать.
Вот и интересно попробовать.чтобы пробовать, нужно иметь представление и логически осмыслить возможность. Я эту процедуру выполнил и пока возможности только при условии которое уже сообщил.
чтобы пробовать, нужно иметь представление и логически осмыслить возможность.Вот я и осмысливаю. Эмпирически. Академиев то не кончал.
возможности только при условии которое уже сообщил.Без bluetoothd? А что он из себя представляет? Даймон-транслятор команд dbus -> bluez. ИМХО - лишнее звено.
Разберись лучше с парингомПытаюсь, но пока не
с поднятием сетевого интерфейсаРуки не доходят.
реальная польза.Кому? Никто кроме нас двоих интереса не проявляет.
Вообще-то мы далеко ушли от начальной темы. Я планировал bluez-tray всего лишь как графическую замену hciconfig, но тема интересная.это предложение напоминает мне об одном гражданине с этого форума. вы случайно не одного поля ягода?
можно бы вылезти за пределы bluez-tray и помочь мне с puppybt.Давно вылез и пытаюсь. Разве не лучше получить сразу ..:..:..:..:..:..-info.lst без промежуточного btscan.lst и sdptool?
Нет не лучше.можно бы вылезти за пределы bluez-tray и помочь мне с puppybt.Давно вылез и пытаюсь. Разве не лучше получить сразу ..:..:..:..:..:..-info.lst без промежуточного btscan.lst и sdptool?
Пытаюсь запустить модуль 64 с гитхаба, такая же проблема. Куда копать? Системдэ поставить? Модуль в папке.Systemd не надо. Почему то не видит dbus, или доступа нет к system сессии
Причем значек в трее реагирует, вкл\выкл есть..устройство определяет.
Поставил systemd из реп пра.Чем не устроил модуль 075-Systemd ?
в идеале сделать модульИ выложить
Узнать какие именно файлы и куда ставит пакманpacman2pfs (http://wiki.puppyrus.org/puppyrus/pra#pacman2pfs%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8Fpfs_%D0%B8%D0%B7_%D1%80%D0%B5%D0%BF%D0%BE%D0%B7%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D1%8F_arch) bluez bluez-util
но ddshurick то точно без него запускает.Я использую udev.
# Run helper every time a Bluetooth device appears
# On remove actions, bluetoothd should go away by itself
ACTION=="add", ATTR{type}=="bluetooth", RUN+="bluez.sh %s{name} /%k"
#!/bin/sh
[ $1 ] || exit
/usr/sbin/bluetoothd &
until [ -f /tmp/dsp ]; do /bin/sleep 1; done #ждём X
DISPLAY=$(/bin/cat /tmp/dsp
LANG=$(/bin/grep LANG= /etc/profile)
export DISPLAY LANG
/usr/bin/bluez-tray "$1" "$2"
echo $DISPLAY > /tmp/dsp
А как это сделать для openbox?ну я также делаю, только в 97-bluetooth.rules прописано что сразу запускаем /usr/sbin/bluetoothd --compat --noload-plugin=hostname
a bluez-tray стартует после запуска графики из ~/startuphttp://forum.puppyrus.org/index.php?topic=18822.msg135264#msg135264
я помню по существующий модуль не изменялся и в нем пока из startupa bluez-tray стартует после запуска графики из ~/startuphttp://forum.puppyrus.org/index.php?topic=18822.msg135264#msg135264
bluez-tray стартует после запуска графики из ~/startupТогда запускаться будет от пользователя со всеми вытекающими проблемами :(
Никаких проблем, будет из /etc/xdg.... И там sudo прописано.bluez-tray стартует после запуска графики из ~/startupТогда запускаться будет от пользователя со всеми вытекающими проблемами :(
А твой вариант запуска systemd прибивает по таймаутуУ меня этой гадости нет.
это слишком банальный ответ. Мой вариант практически более универсален и менее костылен, без ожиданий xorg и передачи дополнительных переменных через /tmpА твой вариант запуска systemd прибивает по таймаутуУ меня этой гадости нет.
вариант практически более универсален и менее костыленПри условии
[alexander@comp-atom-cpu-257e24 ~]$ sudo -l
User alexander may run the following commands on this host:
(ALL) ALL
будем требовать включить в во все isoВ пра "требовать" не придется - я готов - давайте модуль
давайте модульна гитхабе все есть
Старт адаптирован под systemd и minirc?старт не зависит от этих систем инициализации.
чтобы совсем по взрослому...Значит без Арча мы дети?
Значит без Арча мы дети?Обычно авторы, заинтересованные в распространении своих продуктов делают как минимум deb и rpm
запуск утилиты трея из /etc/xdgСаша, у тебя встроенный bluetooth, а у меня "свисток". Как в таком случае? А если подключить ещё один?
а как в таком случае это влияет? должно два экземпляра bluez-tray запустится? ты сам-то какого поведения от системы ждешь для таких ситуаций?запуск утилиты трея из /etc/xdgСаша, у тебя встроенный bluetooth, а у меня "свисток". Как в таком случае? А если подключить ещё один?
а как в таком случае это влияет?Что, трудно представить? Вот у меня сейчас bluetooth-адаптер отключен, что даст запуск из /etc/xdg ? Ничего, кроме ошибки. Подключаю, что происходит? В твоём варианте - ничего, поезд уже ушёл. А если сразу два? Думаешь я просто так сделал команду запуска "bluez-tray hci? rfkill?" ? Думай
должно два экземпляра bluez-tray запустится?Сколько адаптеров, столько и значков.
хватит вполне одного значка в трее.Не наглядно (для начинающих это важно) и не очень удобно.
udev убивает systemd по таймауту. Это факт.Этот факт мне очень нравится :D Такие поделки, как systemd не имеют права существовать. Ты что, выпилить из системы его не можешь?
И тем не менее, наверняка можно обойти эти проблемыСаша, не хватало ещё обходить искусственно созданные проблемы.
--> WvDial: Internet dialer version 1.61
--> Cannot get information for serial port.
--> Initializing modem.
--> Sending: ATZ
--> Sending: ATQ0
--> Re-Sending: ATZ
ATZ
OK
ATQ0
OK
ATZ
OK
--> Sending: AT+CGDCONT=1,"IP","internet.mts.ru"
AT+CGDCONT=1,"IP","internet.mts.ru"
OK
--> Modem initialized.
--> Sending: ATDT*99#
--> Waiting for carrier.
ATDT*99#
NO CARRIER
В чем проблемаПроблема в спаривании устройств. blurtoothctl делает это хорошо, но только через консоль.
что важного в твоем описанииА ничего не важно...
при наличии двух адаптеров, вот лично puppybt предложит выбрать какой использовать, и тут хватит вполне одного значка в трее.Не знаю как он предложит, но два значка информативнее ИМХО.
В версии 5.5 добавлена кнопка pair manualДа, это работает. Я бы ещё gnome-ppp поставил первым и добавлял линк /dev/rfcomm0 -> /dev/modem.
склероз видать стучится.Если бы. :( Давно пришёл, уселся и ножки свесил.
при отсутствии ntf
[ `which ntf` ] && ntf $msg || echo $msg
echo $msg >> /var/log/puppybt.log
Нее в файл лога не то, я имею ввиду лог на экране или область к окну программы приделать, gtkdialog умеет.Посмотри здесь (https://github.com/DdShurick/Richy/tree/master/Msg).
Первый if изменён так как при отсоединении "свистка" остаётся пустой /sys/class/bluetooth.если этот скрипт выполняется при запуске системы (а мы его так и запускаем) то зачем диалог выбора адаптера? пустого /sys/class/bluetooth тут тоже вроде не должно быть.
И первое и второе создаёт два значка в трее при загрузке юдевом.не udev а твой скрипт создает - если уж точно.
напиши юнит.нет это не выход.
Что ожидаем?Вот и я не понимаю, Что нужно?
Что нужно?нужно принять решение и воплотить в жизнь.
когда у тебя в трее два значка, запуск puppybt делается в каком формате?/lib/udev/rules.d/97-bluetooth.rules:
ACTION=="add", KERNEL=="rfkill?", ATTR{type}=="bluetooth", RUN+="bluez.sh %s{name} %k"
/usr/bin/bluez-tray "$@"
cmd[0]=0;
strcat(cmd,"/usr/bin/puppybt ");
strcat(cmd,argv[1]);
strcat(cmd," ");
strcat(cmd,argv[2]);
strcat(cmd," &");
/usr/bin/puppybt hci1 rfkill2 &
/usr/bin/puppybt hci1 rfkill2 &rfkill2 в puppybt не используется в качестве параметра, думаю можно убрать.
Ты же спешишь сразу запустить bluetoothd, который нужен только для трансляции команд через dbus.ты в свой bluez.sh давно заглядывал? там в первых же строках идет запуск bluetoothd. И куда в этом случае ты спешишь?
И куда в этом случае ты спешишь?На тебя глядя. А вдруг... :D
bluetoothd пока еще нужен для работы bluetoothНе уверен на все 100%
у меня все нормально делается.Дык это ты нормальный, а я не-е-е...
Рекомендую ждать версию 5.5 - в ней будет запуск из /etc/xdgPralight64(Minirc)-та же проблема- Ошибка D-Bus.(D-Bus setup failed: Failed to connect to socket /run/dbus/system_bus_socket: No such file or directory)
Pralight64(Minirc)-та же проблема- Ошибка D-Bus.(D-Bus setup failed: Fобратитесь к разработчику дистрибутива. Отсутствие system сессии dbus к работе bluetooth отношения не имеет.
нужное количество bluez-tray будет запускаться скриптом bluetooth.shВыкинуть. Зачем дублировать.
средствами udev через правило.Вот это и оставить. Оно и при старте системы срабатывает.
Оно и при старте системы срабатывает.надоело уже по кругу ходить, я знаю твой метод.
systemd прибивает процессыМеня systemd не интересует и ни разу.
bluetoothd так рано запускать не обязательно.Правильно. Надо запускать из puppybt.
Правильно. Надо запускать из puppybt.почему эти новости мы узнаем только сейчас?
Меня systemd не интересует и ни разу.меня не интересует что это тебя не интересует. Факт имеет место быть.
bash-4.3# ./btmgmt pair BC:B1:F3:46:7C:44
Pairing with BC:B1:F3:46:7C:44 (BR/EDR)
hci0 BC:B1:F3:46:7C:44 type BR/EDR connected eir_len 7
hci0 BC:B1:F3:46:7C:44 request PIN
PIN Request (press enter to reject) >> 0000
PIN Reply successful
Paired with BC:B1:F3:46:7C:44 (BR/EDR)
bash-4.3# pidof bluetoothd
bash-4.3#
Как видите bluetoothd отключен, с включённым выдаёт ошибку. Ну и зачем он тогда?ааа это btmgmt, так он тоже работает с dbus , так что не вариант.
Информация к размышлениюО!! еще и bluez-tray можно заменить на yad+btmgmt управлять контроллером умеет
так он тоже работает с dbusНеправда твоя
# pidof bluetoothd
3293
# kill 3293
# pidof dbus-daemon
3569 3033
# kill 3033
# kill 3569
# pidof dbus-daemon
# pidof bluetoothd
# ./btmgmt pair BC:B1:F3:46:7C:44
Pairing with BC:B1:F3:46:7C:44 (BR/EDR)
hci0 BC:B1:F3:46:7C:44 type BR/EDR connected eir_len 7
hci0 BC:B1:F3:46:7C:44 request PIN
PIN Request (press enter to reject) >> 0000
PIN Reply successful
Paired with BC:B1:F3:46:7C:44 (BR/EDR)
#
# grep dbus btmgmt.c
#
# pidof bluetoothd
3333
# pidof dbus-daemon
3120
# ./btmgmt pair BC:B1:F3:46:7C:44
Pairing with BC:B1:F3:46:7C:44 (BR/EDR)
hci0 BC:B1:F3:46:7C:44 type BR/EDR connected eir_len 7
hci0 BC:B1:F3:46:7C:44 request PIN
PIN Request (press enter to reject) >> 0000
Pairing with BC:B1:F3:46:7C:44 (BR/EDR) failed. status 0x05 (Authentication Failed)
#
Выложил версию 5.6 для х32 и х64PRA?
должно запускать bluez-tray для каждого адаптераОно изначально так и было.
PRA?теоретически везде должно работать, практически yad и ntf если нету то не сработает.
Оно изначально так и было.в предыдущих версиях такого не было у меня. У тебя было, ты через udev запускал.
Выложил версию 5.6 для х32 и х64Прошу, у кого есть на чем, проверить в pra-retro и roll
Прошу, у кого есть на чем, проверить в pra-retro и rollRoll gtk2. Версию 5.6 тестил на буке и стационаре( 2 разных передатчика) только на передачу звука.Все завелось без лишних усилий.Только вот гуй не руссифицирован(не все поймут). Минус только в том, что невозможно регулировать звук из системы.В ролл не нашел альса миксер.Изменяю звук непосредственно в плеере ютюб. Спасибо за отличную работу. З.Ы думаю с другими девайсами не должно возникнуть проблем(мыши,клавы).Теперь только вопрос автоматизациии остался.Хочется чтоб при загрузке системы на автомате спаривались устройства и включался профиль передачи звука системы по блютус.Пока что делаю это ручками из гуя. Не критично для меня, в принципе.
З.Ы думаю с другими девайсами не должно возникнуть проблем(мыши,клавы)ну да проблем не будет, оно в гуи совсем никак не реализовано
В ролл не нашел альса миксерВ меню его нет. alsamixer в консоле
Добавить модуль в исо или рано?Пусть проверит еще, кто-нибудь. Проблемы которые были в Пра64 в ролл отсутствуют.(проблемы с Dbus сессией) и это делает возможным запуск гуя. Но в ролл пока непонятки с громкостью, у меня пропадает регулеровка звука из трея, а из консоли выдает ошибку типа alsamixer и bluealsa уже заняты.Вывод громкости регулируется только из программ.
Проблемы которые были в Пра64 в ролл отсутствуют.(проблемы с Dbus сессией)Даже с minirc?
ROLL-180101: GTK2-01 он же по умолчанию без системдда
Спарили устройство и всеэтого не достаточно для моего устройства, т.к только после connect мой свисток провозглашает что к нему подцепились и можно на него подавать звуки
connect делается из puppybt когда вы выбираете кнопку - отправки или принятия звука. Через dbus.Спарили устройство и всеэтого не достаточно для моего устройства, т.к только после connect мой свисток провозглашает что к нему подцепились и можно на него подавать звуки
connect делается из puppybt когда вы выбираете кнопкуПРи pair manual не появляется кнопка connect, ПРи pair manual в гуе остается рабочем только send sound... play sound
прилетело обновление 089-prar-upd-180101-sf16 и прибило dbus.Да. Он поднимался из /etc/rc.d/nm (minirc). И это было не нужно при отсутствии nm.
sudo rc start dbus
Dbus стартует после этой команды, но не могу sudo bluealsaПотому что bluetoothd не запущен наверняка
не смог спарить и получить звук при апдейте на sf16, даже при "автозапуске" dbus.Ничего в 089-*sf16 по этой теме не менял
можно ли сделать чтобы при закрытии окна терминала, выполнялось действие
nohup действие &
nohup действие &не то совсем.
в PRA-roll bluetoothctlНе из-за этого? (http://forum.puppyrus.org/index.php?topic=18822.msg141236#msg141236)
kill $PID
[ $? = 0 ] && echo "killed"
[ $(kill $PID) ] && echo "killed"
я выкладываю на гитхаб в виде pfs модулядай ссылку. Из шапки - похоже не то
manjaro xfce 17.1.10 (iso в виртуалке) - естьок спасибо.
http://murga-linux.com/puppy/viewtopic.php?t=113799 не пригодится здесь?здесь нет, но ему пригодится
Индекс не я меняю, а rfkill. Вот его и пинай.видите ли сэр, смена индекса не вредит rfkill и устройство продолжает работать, но вредит bluez-tray, который от этого падает. Предъявить авторам rfkill не-че-го от слова совсем.
при изменении индекса сразу падает.Смена индекса происходит после пробуждения, но (/tmp/bootinit.log):
/init: line 84: can't create /sys/power/tuxonice/resume: nonexistent directory
/init: line 86: can't create /sys/power/tuxonice/do_resume: nonexistent directory
Как проверить bluez-tray?я его уже проверил. Я не программист конечно, но считаю что информации по проблеме достаточно. Железо для тестирования есть в наличии. Решение проблемы вполне возможно.
Не хотите перейти в его тему? ;)погоди.
считаю что информации по проблеме достаточно.Я тупой, мне недостаточно. Посмотрел на старой системе, hibernate не работает, syspend работает. После выхода из syspend rfkill меняется но bluez-tray никуда не падает. Давай разбираться, заодно и x64 сделаем.
возможно разной время инициализации устройства и получается что у меня некоторое время после пробуждения вобще нет bluetooth, а потом он появляется, за это время программа падает. больше объяснений нет и как тогда продолжает работать bluez-tray если его конкретно запускали работать с rfkill0 а у устройства уже rfkill1 стал. Он по идее уже не должен управлять устройством, попробуй.считаю что информации по проблеме достаточно.Я тупой, мне недостаточно. Посмотрел на старой системе, hibernate не работает, syspend работает. После выхода из syspend rfkill меняется но bluez-tray никуда не падает. Давай разбираться, заодно и x64 сделаем.
# cat /var/log/pm-suspend.log
Initial commandline parameters:
Thu Oct 25 11:04:35 UTC 2018: Running hooks for hibernate.
Thu Oct 25 11:04:35 UTC 2018: performing hibernate
sh: write error: No such device
Thu Oct 25 11:04:37 UTC 2018: Awake.
Thu Oct 25 11:04:37 UTC 2018: Running hooks for thaw
Thu Oct 25 11:04:37 UTC 2018: Finished.
Вобще модуль для х64 уже давно сделан был"Стала пуганой птица удачи, и не верит чужим рукам" (Машина времени «синяя птица»)
./configure --prefix=/usr --sysconfdir=/etc localstatedir=/var --libdir=/usr/lib64 --disable-systemd --disable-monitor --disable-tools --enable-library
Scanning ...
00:11:67:6A:05:5D SPARKLE
1 0 2 [ Render Audio ] Loudspeaker Audio/Video
BC:B1:F3:46:7C:44 C3520
1 0 2 [ Net Capture Obex Phone ] Cell Phone
Да об чем базар, был бы толк.Толк выйдет..., бестолочь останется.
pscan_rep_mode, pscan_mode, pscan_period_modeненужно
Net Capture Obex Phoneсложно, лучше кодами типа 0x117
сложно, лучше кодами типа 0x117Для скрипта одно и то же, для нас понятнее.
Для скрипта одно и то же,в моем скрипте анализируются 0х1235 коды.
Посмотри, что выдаёт hcitool-5.50.он выдает command not found. В моем модуле hcitool не используется.
в моем скрипте анализируются 0х1235 коды.А тут они уже проанализированы.
он выдает command not found.Я имел в виду выхлоп hcitool в архиве. Жесть.
В моем модуле hcitool не используется.Саша, ты неправ. Первая строка scan.c
/*The part of hcitool-5.46*/
Мне кажется, что вывод bt-scan надо сделать так: "BD-address" "Имя устройства" "Тип устройства" "Сервисы" одной строкой с записью в /tmp/btscan.lst. Твоему скрпту это никак не повредит.сейчас мне бы не повредило чтобы у меня значек в панели не исчезал.
Саша, ты неправ. Первая строка scan.cя прав.
чтобы у меня значек в панели не исчезал.Попробуй без systemd, у меня то не исчезает. Попробуй записать в bluez.sh так (последняя строка) :
/usr/bin/bluez-tray "$@" &
я прав.Не, не прав :P
Попробуй записать в bluez.sh так (последняя строка) :нет у меня такого скрипта запускается как sudo bluez-tray $HCI_DEV $HCI_RFKILL &
Не, не прав :Pнадоел уже, капец как.
запускается как sudo bluez-tray $HCI_DEV $HCI_RFKILL &Оттого и твои проблемы
нет у меня такого скриптаНадо чтоб был
надоел уже, капец как.То ли ещё будет :)
20:A9:0E:72:AF:9C "ALCATEL ONETOUCH 2012D" "Cell Phone" "Net Capture Obex Audio Phone "
BC:B1:F3:46:7C:44 "C3520" "Cell Phone" "Net Capture Obex Phone "
Разве плохоскриптом обрабатывать плохо. У тебя просто нет повторяищихся сервисов, вот вылезет два раза Capture и начнется веселье.
и как его еще запускатьПравилом udev или юнитом systemd. Провёл эксперимент:
# bluez-tray hci0 rfkill0 &
[1] 1084
# pm-suspend
Can't open statefile: Нет такого файла или каталога
[1]+ Выход 1 bluez-tray hci0 rfkill0
вот вылезет два раза CaptureА такое может быть? Пример пожалуйста.
Правилом udevну есть правило.
Как видишь, запущенный командой убился, а запущенный udev живёт.вот и надо чтоб не убивался, он убивается не потому что его снаружи убивают, а сам.
А такое может быть? Пример пожалуйста.https://en.wikipedia.org/wiki/List_of_Bluetooth_profiles у тебя по первому слову выборка? ну вот смотри есть и совпадения.
ну есть правило.А скрипт?
вот и надо чтоб не убивался, он убивается не потому что его снаружи убивают, а сам.Правильно делает, что убивается, вдруг какой дурак неправильно запустит. Ты то вот всегда прав, а другие не
ну вот смотриКуда? Я инглиш в таком количестве не понимаю.
два раза CaptureВ разных строках? Они будут обрабатываться отдельно.
А скрипт?скрипта нет, запускается напрямую.
Правильно делает, что убивается, вдруг какой дурак неправильно запустит. Ты то вот всегда прав, а другие неесли программа запустилась - значит запущена правильно. Нечего завершать работу.
В разных строках? Они будут обрабатываться отдельно.обрабатываться они будут отдельно, а в выводе программы они будут РЯДОМ и парсить это дело будет невозможно. Или ты в свою программу занес только основное, и потом для добавления чего-то надо будет перекомпилировать? так не годится.
скрипта нет, запускается напрямую.
ACTION=="add", KERNEL=="rfkill?", ATTR{type}=="bluetooth", RUN+="bluez.sh %s{name} %k"
если программа запустилась - значит запущена правильно. Нечего завершать работу.После suspend rfkill перезапускается, и становится неправильно. Исправить можно, если динамически брать значение rfkill из /sys/class/bluetooth, но это будет дополнительная бесполезная нагрузка на компьютер. А оно надо, когда с этим udev справляется?
Или ты в свою программу занес только основноеВсё, что было в hcitool-5.46. Могу добавить из 5.50
А оно надо, когда с этим udev справляется?разобрался. udev не видит xorg сессии, нужно передавать export DISPLAY=:0 в скрипте. Но systemd все равно убивает по таймауту, видимо придется сервис писать :(
Всё, что было в hcitool-5.46. Могу добавить из 5.50там нет совпадающих названий профилей? может хоть в скобках писать (0х1002) код?
разобрался. udev не видит xorg сессииЯ думал, что это общеизвестная истина.
Но systemd все равно убивает по таймаутуОт Леннартова поделия добра не жди.
там нет совпадающих названий профилей?Список больше.
может хоть в скобках писать (0х1002) код?Надо поэкспериментировать. Действительно каждый раз переписывать и перекомпилировать .. :(
боль - pairing, не получается вычленить агента из bluetoothctl.я написал разработчикам насчет автоматического паринга, может сделают.
От Леннартова поделия добра не жди.из чисто спортивного интереса добить.
может сделают.Скорее всего нет, слишком старательно они агента "закодировали"
из чисто спортивного интереса добить.Добей, и вынеси за пределы ринга :)
Добей, и вынеси за пределы ринга :)добил вроде.
Добавил в bt-scan HCIDEVUPвключение адаптера? но ведь это делал bluez-tray. зачем трогать sdptool я не понимаю, оно и так нормальное
включение адаптера? но ведь это делал bluez-tray.Bluez-tray это и делает, но из командной строки запускать bt-scan иак удобнее, да и не мешает оно.
зачем трогать sdptool я не понимаю, оно и так нормальноеНадо ему "укоротить язык", слишком многословен. Ведь bt-scan это обрезанный hcitool scan и вроде нормально получилось. Почему бы из sdptool не сделать bt-browse?
Почему бы из sdptool не сделать bt-browse?Сделал. Вот пример "обрезанного" вывода:
bash-4.4# ./bt-browse BC:B1:F3:46:7C:44
Browsing BC:B1:F3:46:7C:44 ...
"OBEX Object Push" (0x1105)
"Headset Audio Gateway" (0x1112)
"Generic Audio" (0x1203)
"Handsfree Audio Gateway" (0x111f)
"Generic Audio" (0x1203)
"Audio Source" (0x110a)
"AV Remote Target" (0x110c)
"OBEX File Transfer" (0x1106)
"Serial Port" (0x1101)
"Dialup Networking" (0x1103)
"Generic Networking" (0x1201)
Иконки, конечно, надо подбирать получшеЕсть же сайты с бесплатными иконками, в разных форматах. Типа этого - https://ru.freepik.com/free-icons
Мне кажется так сложнее, когда функции на виду, сразу жмешь что надо, а тут еще выбирать, потом уже функцииМне тоже так казалось, но суровая действительность показывает, что не все устройства позволяют sdp browse до pair, в частности мои наушники Sparkle.
bash-4.4# ./bt-browse BC:B1:F3:46:7C:44
Browsing BC:B1:F3:46:7C:44 ...
Channel: 1 "OBEX Object Push" (0x1105)
Channel: 2 "Headset Audio Gateway" (0x1112)
Channel: 3 "Handsfree Audio Gateway" (0x111f)
Channel: 4 "OBEX File Transfer" (0x1106)
Channel: 5 "Serial Port" (0x1101)
Channel: 6 "Dialup Networking" (0x1103)
bash-4.4#
Получил вот такой выхлоп bt-browse:интересно что он и без параметров сканирует устройство, только не понятно как из двух выбирает какое сканировать.
как из двух выбирает какое сканировать.Без параметров сканирует всё, что видит.
Надо лучше с разделителями упорядочить, или нормально будет из скриптов отрабатываться?Разделители - пробел. Обработка? Вот фрагмент из bt-scan-gui:Точно так-же можно обработать и вывод bt-browse
Нашёл bluez-tools-5.37 (https://github.com/khvzak/bluez-tools/issues/22).Архив (https://yadi.sk/d/adAggDrKrDMJBg) с утилитами.
bt-scan щас создает в /tmp файл?Нет.
пока на консоль только?Да.
Нет.вобще-то у меня скрипт был настроен на него, какого демона такие изменения в продакшене.
какого демона такие изменения в продакшене.Лишнее звено. Проще так:
parse () {
BDADDR="$1"
NAME="$2"
DEVICE="$(echo $3|tr -d \")"
HCI="hci$4"
}
bt-scan | while read L; do parse $L
...здесь код gtkdialog....
done
Проще так:Оказалось не проще :(
Что случилось?Проще так:Оказалось не проще :(
Что случилось?Плохо стыкуется со скриптом. Пожалуй лучше будет сделать запись в файл (для bt-browse коды и № канала? > ${bdaddr}.info.lst?)
bash-4.4# bt-scan
Scanning ...
20:A9:0E:72:AF:9C "ALCATEL ONETOUCH 2012D" Phone 0
BC:B1:F3:46:7C:44 "C3520" Phone 0
bash-4.4# ./bt-browse BC:B1:F3:46:7C:44
Browsing BC:B1:F3:46:7C:44 ...
1 "OBEX Object Push" 1105
2 "Headset Audio Gateway" 1112
3 "Handsfree Audio Gateway" 111f
4 "OBEX File Transfer" 1106
5 "Serial Port" 1101
6 "Dialup Networking" 1103
1 1105
2 1112
3 111f
4 1106
5 1101
6 1103
(ServiceClassUUID_str) не надо выбрасыватьВ консоль оно пишется.
Имя файла у bt-scan делай староеbt-scan это hcitool, bt-browse это sdptool.
Потрясающе, первый раз наверное на форуме спросили мое мнение.Разве я раньше не спрашивал?
bash-4.4# bt-scan
Scanning ...
BC:B1:F3:46:7C:44 "C3520" Phone 0
20:A9:0E:72:AF:9C "ALCATEL ONETOUCH 2012D" Phone 0
BC:B1:F3:46:7C:44 C3520
20:A9:0E:72:AF:9C ALCATEL ONETOUCH 2012D
#!/bin/sh
bt-scan $1 || exit 1
awk '{print $1}' /tmp/btscan.lst | while read BDADDR
do
bt-browse $BDADDR
done
которые не спареные еще.Да
bt-browse проверку на паринг может сделать?Не знаю
Спареное - определить сервисы, неспареное - не определять.Неспаренные тоже определяются, только нестабильно. Пожалуй надёжнее всего будет при выборе устройства сначала его спарить, а потом выбирать и подключать сервисы.
# find . -name agent.?
./mesh/agent.h
./mesh/agent.c
./src/agent.h
./src/agent.c
./client/agent.h
./client/agent.c
чтобы брали код не с консолисегфолтится.
паринг будет автоматическийЕщё вариант - выводить запрос PIN в графическое окно.
Ещё вариант - выводить запрос PIN в графическое окно.я такое незнаю как сделать. оно же в терминале запрашивает.
./mesh/agent.hэто точно не то, это для mesh сетей.
./mesh/agent.c
./client/agent.hэто я не смотрел, но посмотрю
./client/agent.c
# bt-agent
Agent registered
Default agent requested
Device: 00-11-67-6A-05-5D (00:11:67:6A:05:5D)
Enter passkey: 0000
unregistering agent...
# bt-scan
Scanning ...
00:11:67:6A:05:5D "SPARKLE" AV 0
# bt-browse 00:11:67:6A:05:5D
Browsing 00:11:67:6A:05:5D ...
Failed to connect to SDP server on 00:11:67:6A:05:5D: Connection refused
Channel 2 "Headset" 1108
Channel 1 "Handsfree" 111e
# bluetoothctl connect 00:11:67:6A:05:5D
Attempting to connect to 00:11:67:6A:05:5D
[CHG] Device 00:11:67:6A:05:5D Connected: yes
Connection successful
#
./client/agent.hДА вот в них идет запрос пинкода с терминала, только вот непонятно что разработчики подразумевают под pincode а что под passkey.
./client/agent.c
После ввода команды "bt-browse" в первой консоли появляется приглашение "Enter passkey:"bt-agent вобще-то, нету там bt-browse он во второй. Запятые решают.
Вот бы вместо первой консоли сделать всплывающее окно ввода.это тупик, агент все равно надо регистрировать, а этот запрос пинкода возможно инициирует само устройство и если попадется такое что оно не захочет при bt-browse делать паринг а просто ошибку выдаст, будет плохо.
/client/agent.c и надо сделатьПробовал, сегфолтится :(
это тупик, агент все равно надо регистрироватьАгент привязан к bluetoothd как дополнительная прилада, вот и запускать их вместе.
а этот запрос пинкода возможно инициирует само устройствоПохоже что так
оно не захочет при bt-browse делать паринг а просто ошибку выдаст, будет плохо.Если запрос поступает с той стороны, то ошибка будет только при неправильном ответе. Мой телефон, например, выдаёт запрос на pin при connect, и никакой ошибки.
только вот непонятно что разработчики подразумевают под pincode а что под passkey.Это да :(
/client/agent.cЭтот с моей квалификацией не осилить, там связано с /client/main.c и ещё много чем. Пожалуй надо взять за основу bt-agent, который из консоли нормально работает и добавить ему чтение из файла (есть, но не работает, похоже фильтр кривой) и графическое окно ввода.
и графическое окно ввода.и зачем оно тогда, если из файла брать данные?
Этот с моей квалификацией не осилить, там связано с /client/main.c и ещё много чем.ну ясно дело, все пересекается. может у них в коде параметры из main.conf один раз забираются при старте и потом используются, посмотри в код.
и зачем оно тогдаВ принципе да.
может у них в коде параметры из main.conf один раз забираютсяНет, там из клиента вызываются функции майн, и так далее по цепочке, и из всего этого собирается один бинарник - bluetoothctl.
посмотри в код.Целую неделю смотрел, до сих пор мозги кипят.
Нет, там из клиента вызываются функции майн, и так далее по цепочке, и из всего этого собирается один бинарник - bluetoothctl.ну это понятно, я имею ввиду парсинг main.conf найти, в него вписать чтобы pincode бралось, потом уже в /client/agent.c обрабатывать параметр. В качестве образца взять обработку параметра Name или DiscoverableTimeout из main.conf
я имею ввиду парсинг main.conf найтипочитал код, да main.conf обрабатывается в main.c, потом из него все растаскивается по остальным частям.
src/main.c: В функции «parse_config»:
src/main.c:328:12: ошибка: «struct main_opts» не содержит элемента с именем «defaultpin»
main_opts.defaultpin = val;
^
src/main.c: В функции «init_defaults»:
src/main.c:448:11: ошибка: «struct main_opts» не содержит элемента с именем «defaultpin»
main_opts.defaultpin = 0000;
^
make[1]: *** [Makefile:7938: src/bluetoothd-main.o] Ошибка 1
make: *** [Makefile:3278: all] Ошибка 2
незнаю какой тип данных сделатьСделал char, собралось, но PIN всё равно просит.
есть debug?Только это Мне кажется, что всё-таки проще довести до ума bluez-tools-5.37. Там код понятнее.
Мне кажется, что всё-таки проще довести до ума bluez-tools-5.37. Там код понятнее.мне в принципе без разницы я же не программист и программировать не умею О_О. Но привязывать в bt-agent чтобы брал параметр из конфига от bluez это не совсем правильно.
привязывать в bt-agent чтобы брал параметр из конфига от bluezЗачем? Есть ключ -p (читать из файла), только там что-то не так с фильтром, поэтому не читает.
<notebook labels=\"$(awk '{print substr($0,index($0,$2))}' /tmp/btscan.lst | tr '\n' '|')\">
$(cat /tmp/panel)
</notebook>
посмотри plugins/autopair.cПосмотрел. Гибрид bt-scan и client. Заставить работать не удалось.
прямо "коррупционная схема" какая-то.угу.
Посмотрел. Гибрид bt-scan и client. Заставить работать не удалось.а шо ты делал? дай примеры кода.
а шо ты делал?Да ничего, просто запустил bluetoothd --plugin=autopair, и тишина...
Да ничего, просто запустил bluetoothd --plugin=autopair, и тишина...неее это не поможет, плагин используется по умолчанию, его подгружать ненадо. А вот изменения в код внести - НАДО.
# bt-scan
Scanning ...
20:A9:0E:72:AF:9C "ALCATEL ONETOUCH 2012D" Phone 0
BC:B1:F3:46:7C:44 "C3520" Phone 0
# cat /tmp/btscan.lst
20:A9:0E:72:AF:9C ALCATEL ONETOUCH 2012D
BC:B1:F3:46:7C:44 C3520
20:A9:0E:72:AF:9C ALCATEL ONETOUCH 2012Dу меня в кавычках название, исходники брал с гитхаба, проверь плиз.
у меня в кавычках название, исходники брал с гитхабаЗначит там уже исправленное.
у меня в кавычках название, исходники брал с гитхабаЗначит там уже исправленное.
fprintf(fd,"%s \"%s\"\n", addr, name);
cat /mnt/sdb1/btscan.lst
D0:57:7B:34:D0:A4 "RCS1-PUGACHEV"
# cat /mnt/sdb1/bluez.log
bluetoothd[1978]: src/adapter.c:connected_callback() hci0 device 01:D1:35:11:62:61 connected eir_len 14
bluetoothd[1978]: src/adapter.c:pin_code_request_callback() hci0 01:D1:35:11:62:61
bluetoothd[1978]: plugins/autopair.c:autopair_pincb() device 'satrend' (01:D1:35:11:62:61) class: 0x7a0204 vid/pid: 0x0/0x0
bluetoothd[1978]: src/device.c:new_auth() Requesting agent authentication for 01:D1:35:11:62:61
bluetoothd[1978]: src/agent.c:agent_ref() 0x85514e0: ref=3
без кавычек запишется?Как раз с кавычками.
а нифига!!!!Кавычки?
20:A9:0E:72:AF:9C "ALCATEL ONETOUCH 2012D"
накалякал патчСтоит ли лезть в bluez? Там ещё непонятнее, чем в dt-agent.
Как раз с кавычками.слушай, ну что за отношение такое некрасивое, я же ведь нормально спрашивал, а ты даже не посмотрел в код свой.
Как видишь, имя телефончика из трёх слов.ну и что, раньше у меня код работал, а щас нет и надо принять решение.
Стоит ли лезть в bluez? Там ещё непонятнее, чем в dt-agent.да потому что в bt-agent мне код не понятен, а ты ничего не делаешь. на словах то много сказать можно.
а ты даже не посмотрел в код свой.Я помню, где кавычки ставил.
раньше у меня код работал, а щас нетИз-за кавычек? Давай уберём
в bt-agent мне код не понятенА что, в bluez понятнее? Там побольше наворочено. Дай с этим разобраться.
Вот это кто писал? Какой-то сломанный телефон.у меня в кавычках название, исходники брал с гитхабаЗначит там уже исправленное.
ПРАВИМ СКРИПТ ИЛИ КОДМне проще код. Нервный ты стал, неприятности что-ли?
Мне проще код. Нервный ты стал, неприятности что-ли?Я за понимание! проблема ниачом а мусолим уже несколько дней - это не годится!
Мне проще код.спасибо, забрал.
#Pin Code
00:11:67:6A:05:5D 0000
bash-4.4# bt-agent --pin=/home/live/pin
Agent registered
Default agent requested
Device: 00-11-67-6A-05-5D (00:11:67:6A:05:5D)
Passkey found
bash-4.4# bt-browse 00:11:67:6A:05:5D
Browsing 00:11:67:6A:05:5D ...
Failed to connect to SDP server on 00:11:67:6A:05:5D: Connection refused
Channel 2 "Headset" 1108
Channel 1 "Handsfree" 111e
bash-4.4# bluetoothctl connect 00:11:67:6A:05:5D
Attempting to connect to 00:11:67:6A:05:5D
[CHG] Device 00:11:67:6A:05:5D Connected: yes
Connection successful
bt-agent патчил или стандартный?agent-helper.c строки 338 - 343 исходный:
g_print("Enter passkey: ");
errno = 0;
if (scanf("%ms", &ret) == EOF && errno)
g_warning("%s\n", strerror(errno));
invoke = TRUE;
if ((fp = popen("pin","r"))==NULL)
printf("Cannot open pin.\n");
ret = fgets(str, 5, fp);
pclose(fp);
invoke = TRUE;
А без привязки к mac адресуПопробовать имитировать? Там такие фильтры:
GRegex *regex = g_regex_new("^(\\S+)\\s+(\\S+)$", 0, 0, NULL);
.................
if (g_regex_match_simple("^\\s*(#|$)", line, 0, 0))
................
if (g_regex_match_simple("^([0-9a-fA-F]{2}(:|$)){6}$", t[1], 0, 0))
agent-helper.c строки 338 - 343 исходный:ты какими исходниками пользуешься? не отсюда разве https://github.com/khvzak/bluez-tools
Project Git repository: https://github.com/khvzak/bluez-toolsGoogle выдал https://github.com/khvzak/bluez-tools/issues/22
Google выдал https://github.com/khvzak/bluez-tools/issues/22да читал я, но там агент запускается и принимает соединения.
Надо поправить.Для этого надо разобраться, где собака порылась. Чем и как запускается у тебя bluez-tray?
Надо поправить.Ddshurick исправил на гитхаб. Я скоро выложу свежие pfs для использования.