Slackware (current) + DBUS + BT
snazim na current slacku (update pomoci swaretu, neco mam ze zdrojaku) zprovoznit BT APcko (tj. rezim NAP z pand daemona - viz. http://bluez.sourceforge.net/contrib/HOWTO-PAN).
V kernelu mam zkompilovanou podporu pro BT, BNEP atd. - hcitool scan, info atd. mi ukazuje protistranu atd. Tzn. si myslim, ze co se tyka driveru, tak je to v poradku.
DBus balicky i Bluez (utils, lib,...) mam z current stromu (BlueZ 3.36). Zkousel jsem cely BlueZ stack vyhodit a nahradit v4 ze zdrojaku, ale to je pry zatim takove nedodelane a neni pro to validni dokumentace atd. Takze jsem se vratil zpet k balickum.
Problem je v tom, ze ackoliv by mel daemon hcid propagovat pomoci interniho ovladace sluzby poskytovane stanici - tak to nedela. Na druhe strane se mi zobrazi, ze zarizeni nenabizi zadne sluzby. Az po spdtool add NAP (atd.) mi to ukazuje, ze zarizeni nabizi nejake sluzby. Dalsi vec je, ze pri spusteni
Kód:
pand --listen --master --role=NAP
mam v logu, ze Bind failed. Address already in use(98).
Mozna by mel service NAP do SDP napropagovat pand - ale ocividne to nedela, kdyz se ani nespusti spravne.
Nechal jsem si u hcid zapnuty debug rezim a jedine co jsem tam nasel je, ze nemuze v DBus nastavit passkey....
Jeste pripadne doplnim vypisy z logu (ted k nim nemam pristup) - ale nema nekdo funkcni konfiguraci ? Jeste mozna zkusim vyhodit DBus a BlueZ a zkompilovat to ze zdrojaku proti sobe...
Re: Slackware (current) + DBUS + BT
Citace:
Původně odeslal
Lukas L.
Nechal jsem si u hcid zapnuty debug rezim a jedine co jsem tam nasel je, ze nemuze v DBus nastavit passkey...
dbus je jen messaging daemon, funguje na systemu klicu. Tzn. ze hcid mozna vola urcitou dbus cestu a ocekava odpoved, jenze na tom klici nic neposloucha. Passkey klientu pokud vim existuje nekolik, ten nejjednodussi bere konfiguraci natvrdo nekde z /etc/... Takze zkontrolovat toto. Je to kvuli interakci systemoveho demona s bezicimi desktop sessionami uzivatelu (bublina a prompt na zadani PIN), bez potreby slozite resit autentikaci a mezi-procesovou komunikaci.
Re: Slackware (current) + DBUS + BT
no jo, ale ja mam trosku problem s
Kód:
Mar 25 21:14:24 gw1 dbus-daemon: Rejected send message, 1 matched rules; type="method_return", sender=":1.10" (uid=0 pid=27629 comm="/usr/lib/bluetooth/add-passkey --default ") interface="(unset)" member="(unset)" error name="(unset)" requested_reply=0 destination=":1.9" (uid=0 pid=27619 comm="/usr/sbin/hcid -s -f /etc/bluetooth/hcid.conf "))
tam se vola skript register-passkeys, ktery prochazi adresar /etc/bluetooth/passkeys a pomoci programu add-passkeys je registruje. Pri spusteni toho add-passkeys rucne s patricnym parametrem dostavam :
Kód:
./add-passkey --default
2134
Can't register passkey agent
Passkey agent already exists
process 27892: Applications must not close shared connections - see dbus_connect ion_close() docs. This is a bug in the application.
D-Bus not built with -rdynamic so unable to print a backtrace
Aborted
Takze pokud "already exists", pak zrejme neni potreba se vic snazit - nicmene volani pand (--master --listen --role NAP) mi skonci s
Kód:
pand -n --listen --master --role NAP
pand[27949]: Bluetooth PAN daemon version 3.36
pand[27949]: Bind failed. Address already in use(98)
takze ten pand nebezi a jedine co bezi je hcid, kde jedinou chybu vidim tohle s tim dbusem... Muj hcid.conf i ostatni je uplne defaultni, jen jsem v hcid.conf zmenil class na 0x120100 (tj jako BT AP+transfer na zarizeni typu computer).
Re: Slackware (current) + DBUS + BT
Zapomnel jsem dodat, ze dbus-monitor je tvuj kamarad. Pripadne se da pouzit D-Feet
Dost casto jsou procesy spoustene samotnym dbusem jako reakce na nejakou udalost, takze manualni spusteni nemusi fungovat.
Kód:
pand[27949]: Bind failed. Address already in use(98)
si myslim, ze je jina hlaska. Zkus si toho demona strace-nout, abys videl, jaky socket/port se snazi pouzit.
Re: Slackware (current) + DBUS + BT
hmmm tohle mam v essages pri pokusu o resart pomoci rc.bluetooth :
Kód:
Mar 26 23:42:34 gw1 hcid[2034]: Unregister path: /org/bluez/hci0
Mar 26 23:42:34 gw1 hcid[2034]: Unregistered manager path
Mar 26 23:42:34 gw1 hcid[2034]: bridge pan0 removed
Mar 26 23:42:34 gw1 hcid[2034]: Unregistered manager path
Mar 26 23:42:34 gw1 hcid[2034]: Unregistered manager path
Mar 26 23:42:34 gw1 hcid[2034]: Stopping SDP server
Mar 26 23:42:34 gw1 hcid[2034]: Exit
Mar 26 23:42:35 gw1 hcid[2377]: Bluetooth HCI daemon
Mar 26 23:42:35 gw1 hcid[2377]: Enabling debug information
Mar 26 23:42:35 gw1 hcid[2377]: Starting SDP server
Mar 26 23:42:35 gw1 hcid[2377]: Unix socket created: 12
Mar 26 23:42:35 gw1 pand[2380]: Bluetooth PAN daemon version 3.36
Mar 26 23:42:35 gw1 hcid[2377]: Registered manager path:/org/bluez/audio
Mar 26 23:42:35 gw1 hcid[2377]: Registered manager path:/org/bluez/serial
Mar 26 23:42:35 gw1 hcid[2377]: bridge pan0 created
Mar 26 23:42:35 gw1 hcid[2377]: Registered manager path:/org/bluez/network
Mar 26 23:42:35 gw1 hcid[2377]: Registered server path:/org/bluez/network/nap
Mar 26 23:42:35 gw1 hcid[2377]: Registered server path:/org/bluez/network/gn
Mar 26 23:42:35 gw1 hcid[2377]: Registered server path:/org/bluez/network/panu
Mar 26 23:42:35 gw1 hcid[2377]: Registered input manager path:/org/bluez/input
Mar 26 23:42:35 gw1 hcid[2377]: HCI dev 0 registered
Mar 26 23:42:35 gw1 hcid[2377]: HCI dev 0 already up
Mar 26 23:42:35 gw1 hcid[2377]: Device hci0 has been added
Mar 26 23:42:35 gw1 dbus-daemon: Rejected send message, 1 matched rules; type="method_call", sender=":1.14" (uid=0 pid=2386 comm="/usr/lib/bluetooth/add-passkey --default ") interface="org.bluez.Security" member="RegisterDefaultPasskeyAgent" error name="(unset)" requested_reply=0 destination="org.bluez" (uid=0 pid=2377 comm="/usr/sbin/hcid -d -s -f /etc/bluetooth/hcid.conf "))
Mar 26 23:42:35 gw1 hcid[2377]: Starting security manager 0
Mar 26 23:42:35 gw1 hcid[2377]: Device hci0 has been activated
z toho by se dalo usuzovat, ze pand bezi s PID 2380 - ale po tomhle zadny proces s PID 2380 neexistuje. (to je v pripade,ze necham v rc.bluetooth.conf povoleno spousteni pandu)
a kdyz to neni povoleno :
Kód:
Mar 26 23:46:29 gw1 hcid[2377]: Unregister path: /org/bluez/hci0
Mar 26 23:46:29 gw1 hcid[2377]: Unregistered manager path
Mar 26 23:46:29 gw1 hcid[2377]: bridge pan0 removed
Mar 26 23:46:29 gw1 hcid[2377]: Unregistered manager path
Mar 26 23:46:29 gw1 hcid[2377]: Unregistered manager path
Mar 26 23:46:29 gw1 hcid[2377]: Stopping SDP server
Mar 26 23:46:29 gw1 hcid[2377]: Exit
Mar 26 23:46:30 gw1 hcid[2476]: Bluetooth HCI daemon
Mar 26 23:46:30 gw1 hcid[2476]: Enabling debug information
Mar 26 23:46:30 gw1 hcid[2476]: Starting SDP server
Mar 26 23:46:30 gw1 hcid[2476]: Unix socket created: 12
Mar 26 23:46:30 gw1 hcid[2476]: Registered manager path:/org/bluez/audio
Mar 26 23:46:30 gw1 hcid[2476]: Registered manager path:/org/bluez/serial
Mar 26 23:46:30 gw1 hcid[2476]: bridge pan0 created
Mar 26 23:46:30 gw1 hcid[2476]: Registered manager path:/org/bluez/network
Mar 26 23:46:30 gw1 hcid[2476]: Registered server path:/org/bluez/network/nap
Mar 26 23:46:30 gw1 hcid[2476]: Registered server path:/org/bluez/network/gn
Mar 26 23:46:30 gw1 hcid[2476]: Registered server path:/org/bluez/network/panu
Mar 26 23:46:30 gw1 hcid[2476]: Registered input manager path:/org/bluez/input
Mar 26 23:46:30 gw1 hcid[2476]: HCI dev 0 registered
Mar 26 23:46:30 gw1 hcid[2476]: HCI dev 0 already up
Mar 26 23:46:30 gw1 hcid[2476]: Device hci0 has been added
Mar 26 23:46:30 gw1 dbus-daemon: Rejected send message, 1 matched rules; type="method_call", sender=":1.16" (uid=0 pid=2483 comm="/usr/lib/bluetooth/add-passkey --default ") interface="org.bluez.Security" member="RegisterDefaultPasskeyAgent" error name="(unset)" requested_reply=0 destination="org.bluez" (uid=0 pid=2476 comm="/usr/sbin/hcid -d -s -f /etc/bluetooth/hcid.conf "))
Mar 26 23:46:30 gw1 hcid[2476]: Starting security manager 0
Mar 26 23:46:30 gw1 hcid[2476]: Device hci0 has been activated
nasledne se pokusim spustit pand v non-daemon modu s strace :
Kód:
strace -x pand -n --master --listen --role NAP
execve("/usr/bin/pand", ["pand", "-n", "--master", "--listen", "--role", "NAP"], [/* 35 vars */]) = 0
brk(0) = 0xb832e000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=47259, ...}) = 0
mmap2(NULL, 47259, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb8085000
close(3) = 0
open("/usr/lib/libbluetooth.so.2", O_RDONLY) = 3
read(3, "\x7f\x45\x4c\x46\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=79032, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb8084000
mmap2(NULL, 77772, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb8071000
mmap2(0xb8083000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x12) = 0xb8083000
close(3) = 0
open("/lib/libc.so.6", O_RDONLY) = 3
read(3, "\x7f\x45\x4c\x46\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1658348, ...}) = 0
mmap2(NULL, 1439312, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7f11000
mmap2(0xb806b000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x15a) = 0xb806b000
mmap2(0xb806e000, 9808, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb806e000
close(3) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f10000
set_thread_area({entry_number:-1 -> 6, base_addr:0xb7f106c0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
mprotect(0xb806b000, 8192, PROT_READ) = 0
mprotect(0xb80b0000, 4096, PROT_READ) = 0
munmap(0xb8085000, 47259) = 0
socket(PF_BLUETOOTH, SOCK_RAW, 4) = 3
ioctl(3, 0x800442d2, 0xbfbb578c) = 0
rt_sigaction(SIGCHLD, {SIG_IGN}, NULL, 8) = 0
rt_sigaction(SIGPIPE, {SIG_IGN}, NULL, 8) = 0
rt_sigaction(SIGHUP, {0xb80b3730, [], SA_NOCLDSTOP}, NULL, 8) = 0
rt_sigaction(SIGTERM, {0xb80b3740, [], SA_NOCLDSTOP}, NULL, 8) = 0
rt_sigaction(SIGINT, {0xb80b3740, [], SA_NOCLDSTOP}, NULL, 8) = 0
socket(PF_FILE, 0x80002 /* SOCK_??? */, 0) = 4
connect(4, {sa_family=AF_FILE, path="/dev/log"}, 110) = 0
brk(0) = 0xb832e000
brk(0xb834f000) = 0xb834f000
time(NULL) = 1238107718
open("/etc/localtime", O_RDONLY) = 5
fstat64(5, {st_mode=S_IFREG|0644, st_size=2246, ...}) = 0
fstat64(5, {st_mode=S_IFREG|0644, st_size=2246, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb8090000
read(5, "\x54\x5a\x69\x66\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00"..., 4096) = 2246
_llseek(5, -28, [2218], SEEK_CUR) = 0
read(5, "\nCET-1CEST,M3.5.0,M10.5.0/3\n", 4096) = 28
close(5) = 0
munmap(0xb8090000, 4096) = 0
getpid() = 2520
writev(2, [{"pand[2520]: Bluetooth PAN daemon"..., 45}, {"\n", 1}], 2pand[2520]: Bluetooth PAN daemon version 3.36
) = 46
send(4, "<30>Mar 26 23:48:38 pand[2520]: "..., 65, MSG_NOSIGNAL) = 65
socket(PF_FILE, SOCK_STREAM, 0) = 5
connect(5, {sa_family=AF_FILE, path="/var/run/sdp"}, 110) = 0
send(5, "\x75\x00\x00\x00\x9d\x00\x35\x9a\x09\x00\x01\x35\x03\x19"..., 162, 0) = 162
select(6, [5], NULL, NULL, {20, 0}) = 1 (in [5], left {19, 996189})
recv(5, "\x76\x00\x00\x00\x04\x00\x01\x00\x04", 65535, 0) = 9
socket(PF_BLUETOOTH, SOCK_SEQPACKET, 0) = 6
bind(6, {sa_family=AF_BLUETOOTH, sa_data="\x0f\x00\x00\x00\x00\x00\x00\x00\x68\x76\x0b\xb8\xb0\x5e"...}, 10) = -1 EADDRINUSE (Address already in use)
time(NULL) = 1238107718
writev(2, [{"pand[2520]: Bind failed. Address"..., 51}, {"\n", 1}], 2pand[2520]: Bind failed. Address already in use(98)
) = 52
send(4, "<27>Mar 26 23:48:38 pand[2520]: "..., 71, MSG_NOSIGNAL) = 71
exit_group(0) = ?
Process 2520 detached
kde to jasne spadne na bind(6, {sa_family=AF_BLUETOOTH, sa_data="\x0f\x00\x00\x00\x00\x00\x00\x00\x68\x76\ x0b\xb8\xb0\x5e"...}, 10) = -1 EADDRINUSE
Re: Slackware (current) + DBUS + BT
Citace:
Původně odeslal
Lukas L.
socket(PF_BLUETOOTH, SOCK_SEQPACKET, 0) = 6
bind(6, {sa_family=AF_BLUETOOTH, sa_data="\x0f\x00\x00\x00\x00\x00\x00\x00\x68\x76\ x0b\xb8\xb0\x5e"...}, 10) = -1 EADDRINUSE (Address already in use)
No tak tady je to videt, neco tam uz bezi, neco si ten socket vzalo uz pro sebe. Mozna neco najdes v netstatu.
Re: Slackware (current) + DBUS + BT
no tak problem zda se vyresen...v bluez existuji pluginy, ktere se snad maji nejak zavadet a tvorit service...u me nejak netvori. To bindovani pandu blokoval prave network.so plugin. Takze jedna moznost byla rozhodit sit s nim - to se nepovedlo, proste nijak. I kdyz jsem pres sdptool podstrcil skluzbu NAP - tak pri pokusu o pripojeni proste nic. V main.conf je moznost zadisablovat pluginy, ale ta nejak nefunguje.
Takze jsem nakonec skoncil tak, ze jsem prekompiloval BlueZ:
Kód:
./configure --disable-network --enable-netlink --enable-pand --enable-manpages --enable-configfiles --enable-debug --prefix=/usr --mandir=/usr/share/man --sysconfdir=/etc --localstatedir=/var --libexecdir=/lib
tim jsem si zkompiloval pand a vyradil network plugin - ted kdyz se z PDAcka pripojim - tak musim samozrejme zapnout bnep0 iface, zatim to jedu jako oddelenou sit, kterou maskaraduju na inet iface - ale mozna to predelam na bridge s dratovou lokalni siti...
pand spoustim pomci
Kód:
pand --listen --master --role NAP --encrypt --devup /etc/bluetooth/scripts/devup.sh
kde devup.sh dela :
Kód:
#!/bin/sh
ifconfig $1 up 0.0.0.0
brctl addif pan0 $1
logger "Interface $1 is up"
tj. nahodi interface (podle parametru bnep0 atd.) a prida ho pred-pripraveeho bridge pan0 (ten ma IPcko, a v iptables jsou na nej pravidla input, output a forward s maskaradou). Samozrejme by to slo i resit tak, ze ten bridge bude jeste obsahovat dratovou sitovku lokalni site (to byl puvodni zamer - samozrejme by to co popisuju slo delat i primo s bnep% interface).
joa BTW musel jsem si upravit a prekompilovat slackwarovsky add-passkey, protoze puvodni v rozporu s najakym postupem dbusu zaviral to (shar) pripojeni - viz moje predchozi posty - tak jsem tam zakomentoval 2x volani najake metody dbus...close...
a aby to bylo kompletni - upravil jsem bluetoot.conf pro DBUS dle http://forums.opensuse.org/hardware/...us-update.html