Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.





Cenzor wirtualnego świata
Zainspirowany tym tematem -- http://forum.dug.net.pl/viewtopic.php?id=11179 --, postanowiłem coś sprawdzić u siebie. I się okazało, że mam jakieś cuda z tym bluetoothem :] Podpiąłem go zatem pod usb i włączyłem bluetooth w komórce po czym dałem:
morfik:~$ ps -eo "pid user args" | grep -i blue
5703 morfik grep --color=auto -i blue
morfik:~$ hcitool scan
Scanning ...
58:17:0C:11:46:0F Morfik
morfik:~$ obexfs -b 58:17:0C:11:46:0F /home/morfik/bluetooth
morfik:~$ ls -al /home/morfik/bluetooth
total 5.0K
drwxr-xr-x 1 morfik morfik 0 Oct 17 01:59 ./
drwxr-xr-x 79 morfik morfik 4.0K Oct 17 01:43 ../
drwxr-xr-x 1 morfik morfik 0 Jan 1 1970 Karta pamięci/
drwxr-xr-x 1 morfik morfik 0 Jan 1 1970 Pamięć telefonu/i mam:
morfik:~$ ps -eo "pid user args" | grep -i blue 5767 morfik obexfs -b 58:17:0C:11:46:0F /home/morfik/bluetooth 5796 morfik grep --color=auto -i blue
Czyli wychodzi na to, że demon bluetooth nie jest odpalony ale urządzenia się widzą i mogę zgrywać i wgrywać dane przez /home/morfik/bluetooth. Ale jak chcę wysłać plik przez komórkę, to już wyrzuca błąd. xD
Patrzę w komórkę, nie ma sparowanych żadnych urządzeń. Próbuje wyszukać w komórce kompa, znajduje ale po próbie podłączenia, która trwa z jedną minutę wyrzuca komunikat, że nie można połączyć. Odpalam blueman-applet ale nie pojawia się ikonka na pasku, no bo demon bluetooth nie jest odpalony...
Po wydaniu:
root:~# /etc/init.d/bluetooth restart [ ok ] Stopping bluetooth: rfcomm /usr/sbin/bluetoothd. [ ok ] Starting bluetooth: bluetoothd rfcomm. root:~# ps -eo "pid user args" | grep -i blue 6513 morfik /usr/bin/python /usr/bin/blueman-applet 6580 root /usr/sbin/bluetoothd 6694 root grep --color=auto -i blue
Ikonka się pojawia, wchodzę w urządzenia ale tam też nie ma żadnych sparowanych urządzeń.
Sprawdziłem starą komórkę, która sobie od lat leży w szafie i tam ten numer nie przejdzie -- woła o pin. Ale odpalając jej demona bluetooth + ustawiając pin, komórka dodaje komputer do listy, obex niby montuje system plików ale nic w nim nie ma:
# /etc/init.d/bluetooth restart [ ok ] Stopping bluetooth: rfcomm /usr/sbin/bluetoothd. [ ok ] Starting bluetooth: bluetoothd rfcomm. morfik:~$ bluetooth-agent 0000 & # ps -eo "pid user args" | grep -i blue 9073 root /usr/sbin/bluetoothd 9096 morfik bluetooth-agent 0000 9105 root grep --color=auto -i blue
W przypadku ustawienia pinu na 0000 czy jakikolwiek inny, ta nowsza komórka dalej nie wyrzuca okienka, w którym można by go wprowadzić i dalej jest możliwa wymiana plików przez uprzednie zamontowanie systemu plików przez obex...
Czy ktoś mi jest w stanie wyjaśnić jak jakim cudem to działa? xD Te urządzenia nie powinny być pierw sparowane? W każdej graficznej nakładce chciało ode mnie kod zanim możliwa była interakcja miedzy urządzeniami, a tutaj na tej nowszej komórce pojawia się komunikat: TEST prosi o udostępnienie twoich elementów. Jak wyrażę zgodę, można przesyłać dane.
Jeszcze zainstalowane pakiety:
morfik:~$ dpkg -l | grep -i blue ii blueman 1.23+update1-2 i386 Graphical bluetooth manager ii bluez 4.101-3 i386 Bluetooth tools and daemons ii libbluetooth3:i386 4.101-3 i386 Library to use the BlueZ Linux Bluetooth stack ii python-bluez 0.18-2 i386 Python wrappers around BlueZ for rapid bluetooth development
Ostatnio edytowany przez morfik (2013-10-20 14:39:38)
Offline





Cenzor wirtualnego świata
Znalazłem trochę info o parowaniu urządzeń:
Entering a PIN is actually an outdated method of pairing, now called Legacy Pairing. Secure Simple Pairing Mode is available in Bluetooth v2.1 and later, which comprises most modern Bluetooth devices. SSPMode authentication is handled by the Bluetooth protocol stack and thus works without user interaction.
Więcej można poczytać na http://en.wikipedia.org/wiki/Bluetooth#Pairing_mechanisms
Czyli w bluetooth 2.1+ user się już nie zajmuje tym ręcznym wpisywaniem pinów. Sprawdziłem i faktycznie sam adapter jak i nowa komórka mają wersje bluetooth 2.1, temu można przesyłać dane bez podawania pinu.
Ale nadal mnie zastanawia jak te urządzenia się komunikują skoro demon bluetooth jest nieodpalony. :] Włączyłem kompa z podłączonym adapterem, lampka nie miga. Wyciągnąłem i wsadziłem adapter, to samo. Dopiero jak odpaliłem demona przez
root:~# /etc/init.d/bluetooth start [ ok ] Starting bluetooth: bluetoothd rfcomm.
Lampka na adapterze zaczeła migać. Ale po zastopowaniu demona, dalej miga i mimo, że nie ma procesu bluetoothd, w dalszym ciągu można wymieniać dane. :] To bug czy tak powinno być? Jeśli odłączę ten adapter z migającą diodą przy położonym demonie bluetoothd i ponownie podłaczę adapter, lampka nie miga.
Znalazłem jeszcze info na temat zestawiania połączenia z urządzeniami bluetooth przy pomocy /dev/rfcomm0 . Poniżej instrukcja:
root:~# /etc/init.d/bluetooth start
[ ok ] Starting bluetooth: bluetoothd rfcomm.
root:~# hcitool dev
Devices:
hci0 00:15:83:4A:CD:C1
root:~# hciconfig
hci0: Type: BR/EDR Bus: USB
BD Address: 00:15:83:4A:CD:C1 ACL MTU: 310:10 SCO MTU: 64:8
UP RUNNING PSCAN ISCAN
RX bytes:6667 acl:0 sco:0 events:70 errors:0
TX bytes:923 acl:0 sco:0 commands:46 errors:0
root:~# hciconfig hci0 sspmode
hci0: Type: BR/EDR Bus: USB
BD Address: 00:15:83:4A:CD:C1 ACL MTU: 310:10 SCO MTU: 64:8
Simple Pairing mode: Enabled # czyli SPP jest włączone
root:~# hciconfig hci0 piscan
root:~# sdptool add SP
Serial Port service registered
root:~# hcitool scan
Scanning ...
58:17:0C:11:46:0F MorfikSprawdzamy czy urządzenie odpowiada na ping:
root:~# l2ping 58:17:0C:11:46:0F Ping: 58:17:0C:11:46:0F from 00:15:83:4A:CD:C1 (data size 44) ... 44 bytes from 58:17:0C:11:46:0F id 0 time 12.87ms 44 bytes from 58:17:0C:11:46:0F id 1 time 24.85ms 44 bytes from 58:17:0C:11:46:0F id 2 time 25.90ms 44 bytes from 58:17:0C:11:46:0F id 3 time 23.88ms 44 bytes from 58:17:0C:11:46:0F id 4 time 27.88ms 44 bytes from 58:17:0C:11:46:0F id 5 time 24.87ms ^C6 sent, 6 received, 0% loss
Teraz jeszcze trzeba uzupełnić plik rfcomm.conf i podać w nim dane potrzebne do zestawienia połączenia:
root:~# cat /etc/bluetooth/rfcomm.conf
rfcomm0 {
# Automatically bind the device at startup
bind no;
# Bluetooth address of the device
device 58:17:0C:11:46:0F;
# RFCOMM channel for the connection
channel 10;
# Description of the connection
comment "Komcia Morfika";
}
root:~# rfcomm connect rfcomm0
Connected /dev/rfcomm0 to 58:17:0C:11:46:0F on channel 10
Press CTRL-C for hangupPrzy czym by uzyskać channel, trzeba przeskanować urządzenie bluetooth w celu znalezienia usług jakie to urządzenie posiada i zgodnie z tym co pisze tutaj: http://dug.net.pl/tekst/98/bluetooth_bez_gnome_i_kde/h/bluetooth , to by było:
morfik:~$ sdptool browse 58:17:0C:11:46:0F
Browsing 58:17:0C:11:46:0F ...
Service Description: Sony Ericsson J10
Service RecHandle: 0x10000
Service Class ID List:
"PnP Information" (0x1200)
Service Name: OBEX SyncML Client
Service RecHandle: 0x2008002
Service Class ID List:
UUID 128: 00000002-0000-1000-8000-0002ee000002
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 10
"OBEX" (0x0008)
Service Name: Serial Port 1
Service RecHandle: 0x2008003
Service Class ID List:
"Serial Port" (0x1101)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 2
Service Name: Dial-up Networking
Service RecHandle: 0x2008004
Service Class ID List:
"Dialup Networking" (0x1103)
"Generic Networking" (0x1201)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 1
Profile Descriptor List:
"Dialup Networking" (0x1103)
Version: 0x0100
Service Name: Music Streaming Service
Service Provider: Sony Ericsson
Service RecHandle: 0x8000001
Service Class ID List:
"Audio Source" (0x110a)
Protocol Descriptor List:
"L2CAP" (0x0100)
PSM: 25
"AVDTP" (0x0019)
uint16: 0x100
Profile Descriptor List:
"Advanced Audio" (0x110d)
Version: 0x0100
Service Name: Remote Control Target Service
Service Provider: Sony Ericsson
Service RecHandle: 0x10000001
Service Class ID List:
"AV Remote Target" (0x110c)
Protocol Descriptor List:
"L2CAP" (0x0100)
PSM: 23
"AVCTP" (0x0017)
uint16: 0x102
Profile Descriptor List:
"AV Remote" (0x110e)
Version: 0x0103
Service Name: Remote Control Service
Service Provider: Sony Ericsson
Service RecHandle: 0x10000002
Service Class ID List:
"AV Remote" (0x110e)
Protocol Descriptor List:
"L2CAP" (0x0100)
PSM: 23
"AVCTP" (0x0017)
uint16: 0x102
Profile Descriptor List:
"AV Remote" (0x110e)
Version: 0x0103
Service Name: SEMC Watch Phone
Service RecHandle: 0x40000000
Service Class ID List:
"" (0x8e771401)
Protocol Descriptor List:
"L2CAP" (0x0100)
PSM: 61681
"RFCOMM" (0x0003)
Channel: 2
Service Name: SEMC FRCP
Service RecHandle: 0x40000001
Service Class ID List:
"" (0x8e771503)
Protocol Descriptor List:
"L2CAP" (0x0100)
PSM: 61691
Profile Descriptor List:
"" (0x8e771501)
Version: 0x0100
Service Name: PAN Network Access Point
Service Description: NAP provides access to internet for one connecting PANu
Service RecHandle: 0x1000003
Service Class ID List:
"Network Access Point" (0x1116)
Protocol Descriptor List:
"L2CAP" (0x0100)
PSM: 15
"BNEP" (0x000f)
Version: 0x0100
SEQ8: 0 6 dd
Language Base Attr List:
code_ISO639: 0x656e
encoding: 0x6a
base_offset: 0x100
Profile Descriptor List:
"Network Access Point" (0x1116)
Version: 0x0100
Service Name: PAN user
Service Description: PANu can connect to a Network Access Point to gain access to internet
Service RecHandle: 0x1000004
Service Class ID List:
"PAN User" (0x1115)
Protocol Descriptor List:
"L2CAP" (0x0100)
PSM: 15
"BNEP" (0x000f)
Version: 0x0100
SEQ8: 0 6 dd
Language Base Attr List:
code_ISO639: 0x656e
encoding: 0x6a
base_offset: 0x100
Profile Descriptor List:
"PAN User" (0x1115)
Version: 0x0100
Service Name: SEMC HLA
Service RecHandle: 0x40000002
Service Class ID List:
"" (0x8e771301)
Protocol Descriptor List:
"L2CAP" (0x0100)
PSM: 61689
"" (0x8e770300)
Profile Descriptor List:
"" (0x8e771303)
Version: 0x0100
Service Name: SEMC OBP
Service RecHandle: 0x40000003
Service Class ID List:
"" (0x8e771602)
Protocol Descriptor List:
"L2CAP" (0x0100)
PSM: 61685
"" (0x8e770300)
Profile Descriptor List:
"" (0x8e771601)
Version: 0x0100
Service Name: Hands-Free Gateway
Service RecHandle: 0x2008005
Service Class ID List:
"Handsfree Audio Gateway" (0x111f)
"Generic Audio" (0x1203)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 5
Profile Descriptor List:
"Handsfree" (0x111e)
Version: 0x0105
Service Name: Headset Gateway
Service RecHandle: 0x2008006
Service Class ID List:
"Headset Audio Gateway" (0x1112)
"Generic Audio" (0x1203)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 4
Profile Descriptor List:
"Headset" (0x1108)
Version: 0x0100
Service Name: OBEX Object Push
Service RecHandle: 0x2008007
Service Class ID List:
"OBEX Object Push" (0x1105)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 6
"OBEX" (0x0008)
Profile Descriptor List:
"OBEX Object Push" (0x1105)
Version: 0x0100
Service Name: OBEX File Transfer
Service RecHandle: 0x2008008
Service Class ID List:
"OBEX File Transfer" (0x1106)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 7
"OBEX" (0x0008)
Profile Descriptor List:
"OBEX File Transfer" (0x1106)
Version: 0x0100
Service Name: OBEX IrMC Sync Server
Service RecHandle: 0x2008009
Service Class ID List:
"IrMC Sync" (0x1104)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 8
"OBEX" (0x0008)
Profile Descriptor List:
"IrMC Sync" (0x1104)
Version: 0x0100
Service Name: Phonebook Access PSE
Service RecHandle: 0x200800a
Service Class ID List:
"Phonebook Access - PSE" (0x112f)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 11
"OBEX" (0x0008)
Profile Descriptor List:
"Phonebook Access" (0x1130)
Version: 0x0100Z tym, że u mnie jest kilka pozycji od OBEX w Protocol Descriptor List . W każdym razie jak dałem 7 kanał od OBEX File Transfer to nie mogłem podmontować systemu plików fona przy pomocy obexa. Udało się to zrobić po zmianie kanału na 10, czyli OBEX SyncML Client.
Z tego co piszą, urządzenie /dev/rfcomm0 ma tylko zestawiać połączenie, choć w sumie zastanawiam się po co, przecie można było wymieniać dane montując system plików przy pomocy obexa i wszystko grało. Czy to jest tylko na wypadek gdyby domyślny kanał był nie taki jak trzeba i istniałaby potrzeba jego zmiany?
Czy istnieje możliwość wyłączenia bluetootha tak by lampka zgasła i to bez wyjmowania urządzenia z portu usb?
Offline





Cenzor wirtualnego świata
Ok już wiem jak parować te urządzenia tak by pojawiał się i kod i były dodawane na swoich listach zaufanych urządzeń.
Wszystko się rozchodzi o umiejętne operowanie narzędziami z bluez-* . I tak dla przykładu by sparować fona z kompem:
morfik:~$ bluez-simple-agent hci0 58:17:0C:11:46:0F RequestConfirmation (/org/bluez/13370/hci0/dev_58_17_0C_11_46_0F, 163474) Confirm passkey (yes/no): yes Release New device (/org/bluez/13370/hci0/dev_58_17_0C_11_46_0F)
Jak widać jest generowany kod: 163474 , potem pojawia się informacja na fonie z tym samym numerem. Po potwierdzeniu -- pierw na telefonie, potem na pc -- na liscie urządzeń w telefonie widnieje mój komp. Czyli wszystko przebiegło pomyślnie.
W przypadku ponownego parowania urządzeń, zostanie wyrzucony taki komunikat:
morfik:~$ bluez-simple-agent hci0 58:17:0C:11:46:0F Creating device failed: org.bluez.Error.AlreadyExists: Already Exists
Jeśli uważamy, że ten powyższy błąd nie powinien się pojawić, trzeba ponownie sparzyć urządzenia:
morfik:~$ bluez-simple-agent hci0 58:17:0C:11:46:0F repair RequestConfirmation (/org/bluez/13370/hci0/dev_58_17_0C_11_46_0F, 833296) Confirm passkey (yes/no): yes Release New device (/org/bluez/13370/hci0/dev_58_17_0C_11_46_0F
W przypadku gdy się wybierze "no" , urządzenie zostanie usunięte z listy.
Można też dodawać urządzenia do zaufanych. I tak np. by sprawdzić czy dane urządzenie jest zaufane:
morfik:~$ bluez-test-device trusted 58:17:0C:11:46:0F 0
0 oznacza, że nie jest, 1 oznacza, że jest. By uczynić to urządzenie zaufanym:
morfik:~$ bluez-test-device trusted 58:17:0C:11:46:0F yes morfik:~$ bluez-test-device trusted 58:17:0C:11:46:0F 1
I to generalnie jest wszystko jeśli chodzi o parzenie urządzeń. Raz zrobione i nie ma potrzeby ponownie tym sobie głowy zawracać.
Czyli pozostaje tylko jedno pytanie już. Czemu ten bluetooth po położeniu demona dalej działa i czy idzie go jakoś wyłączyć? xD
EDIT:
Właśnie sprawdziłem ten sposób ze starą komórką:
morfik:~$ bluez-simple-agent hci0 00:18:C5:1F:02:CD RequestPinCode (/org/bluez/13370/hci0/dev_00_18_C5_1F_02_CD) Enter PIN Code: 7865 Release New device (/org/bluez/13370/hci0/dev_00_18_C5_1F_02_CD)
Różnica polega na tym, że trzeba było ręcznie podać pin. W każdym razie po sparowaniu puściłem obexa:
morfik:~$ obexfs -b 00:18:C5:1F:02:CD /home/morfik/bluetooth morfik:~$ ls -al /home/morfik/bluetooth total 8.0K drwxr-xr-x 1 morfik morfik 0 Oct 17 20:28 ./ drwxr-xr-x 79 morfik morfik 4.0K Oct 17 16:47 ../ drwxr-xr-x 1 morfik morfik 0 Jan 1 1970 Dźwięki/ drwxr-xr-x 1 morfik morfik 0 Jan 1 1970 Grafiki/ drwxr-xr-x 1 morfik morfik 0 Jan 1 1970 Media Player Sync files/ drwxr-xr-x 1 morfik morfik 0 Jan 1 1970 Nagrania/ drwxr-xr-x 1 morfik morfik 0 Jan 1 1970 Odebr. pliki/ drwxr-xr-x 1 morfik morfik 0 Jan 1 1970 Pliki wideo/ drwxr-xr-x 1 morfik morfik 0 Jan 1 1970 Tematy/ drwxr-xr-x 1 morfik morfik 0 Jan 1 1970 Zdjęcia/
Przetestowałem zapis i odczyt, wszystko działa jak należy. Pierwszy raz udało mi się doprowadzić te komórkę do stanu używalności. xD
EDIT2:
Udało mi się też w końcu wyłączyć adapter bez wyciągania i ponownego podpinania do portu. Więcej info tutaj: http://forum.dug.net.pl/viewtopic.php?pid=243327#p243327
Ostatnio edytowany przez morfik (2013-10-20 14:39:00)
Offline