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/.
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
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 Morfik
Sprawdzamy 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 hangup
Przy 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: 0x0100
Z 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
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