Z kernelem 2.4 występował jakiś drobny błąd, nie wnikalem co bylo przyczyna poniewaz korzystam z kernela 2.6. Wszystko potrzebne do uruchomienia bluetooth dostępne jest na http://linuxpackages.net w wersji dla S11.
1. Instalujemy pakiety.
dbus-1.0.2-i486-1mht.tgz
bluez-libs-3.5-i686-1.tgz
bluez-utils-3.5-i686-1.tgz
openobex-1.3-i686-1.tgz
2. D-Bus.
Najpierw musimy uruchomić D-Bus. Obecnie jest on niezbędny do działania bluetooth. Najnowszy Xfce również bez niego nie ruszy. "D-Bus is a message bus system, a simple way for applications to talk to one another."
Dodajemy usera messagebus
Kod: Zaznacz cały
useradd -d /dev/null -s /dev/null messagebus
Kod: Zaznacz cały
test -x /etc/rc.d/rc.messagebus && /etc/rc.d/rc.messagebus start
Kod: Zaznacz cały
test -x /etc/rc.d/rc.messagebus && /etc/rc.d/rc.messagebus stop
rm -f /var/run/dbus/*
Startujemy D-Bus.
Kod: Zaznacz cały
/etc/rc.d/rc.messagebus start
Zatrzymanie D-Busa /etc/rc.d/rc.messagebus stop z jakiegoś powodu pozostawia pid i "socket". Można to obejsc dodając rm -f /var/run/dbus/* do rc.local_shutdown lub poprawiając rc.messagebus.
Sprawdzamy czy dziala
Shell# ps ax | grep dbus
/usr/bin/dbus-daemon --system
3. Konfiguracja Bluetooth.
Shell# ldd /usr/sbin/hcid
libdbus-1.so.2 => not found
Kod: Zaznacz cały
ln -s /usr/lib/libdbus-1.so.3.2.0 /usr/lib/libdbus-1.so.2
Kod: Zaznacz cały
# bluetooth
test -x /etc/rc.d/rc.bluetooth && /etc/rc.d/rc.bluetooth start
Kod: Zaznacz cały
# bluetooth
test -x /etc/rc.d/rc.bluetooth && /etc/rc.d/rc.bluetooth stop
Kod: Zaznacz cały
# Security Manager mode
# none - Security manager disabled
# auto - Use local PIN for incoming connections
# user - Always ask user for a PIN
#
security auto;
# Default PIN code for incoming connections
passkey "1234";
Kod: Zaznacz cały
rfcomm0 {
# Automatically bind the device at startup
bind yes;
# Bluetooth address of the device
device A0:B2:C3:D4:E5:F6;
# RFCOMM channel for the connection
channel 1;
# Description of the connection
comment "Dialup";
}
rfcomm1 {
# Automatically bind the device at startup
bind yes;
# Bluetooth address of the device
device A0:B2:C3:D4:E5:F6;
# RFCOMM channel for the connection
channel 6;
# Description of the connection
comment "OBEX Object Push";
}
4. Konfiguracja GPRS na przykładzie plusgsm.
Ponizsze pliki kopiujemy do /etc/ppp/ i nadajemy im atrybut wykonywalności.
plusgsm_gprs_chat_script
Kod: Zaznacz cały
ABORT BUSY
ABORT 'NO CARRIER'
ABORT VOICE
ABORT 'NO DIALTONE'
ABORT 'NO DIAL TONE'
ABORT 'NO ANSWER'
'' ATZ
OK-AT-OK AT+CGDCONT=1,"IP","internet"
OK "ATD*99***1#"
CONNECT ''
Kod: Zaznacz cały
pppd /dev/rfcomm0 115200 \
connect "chat -V -f /etc/ppp/plusgsm_gprs_chat_script" \
crtscts modem -detach noccp defaultroute \
noauth ipcp-accept-remote ipcp-accept-local noipdefault debug
Kod: Zaznacz cały
nameserver 212.2.96.51
nameserver 212.2.96.52
Kod: Zaznacz cały
/etc/rc.d/rc.bluetooth start
Jeśli komórka nic nie znalazła.
Shell# /etc/rc.d/rc.bluetooth stop
Shell# rm -rf /var/lib/bluetooth/*
Nie nalezy usuwać /var/lib/bluetooth tylko id naszej komórki, która tam się znajduje. Następnie /etc/rc.d/rc.bluetooth start i ponawiamy szukanie.
Gdy urządzenia zostaną sparowane możemy nawiazac polaczenie.
Shell# /etc/ppp/gprs_start_script &
zamykamy:
Shell# killall pppd
5. Przesylanie plikow.
Skorzystalem z tych 'opd' i 'ussp-push'. U mnie dziala to tylko dla niewielkich plikow. Przy kilku megowych zawiesza sie. Czasami trzeba restartowac BT nawet przy mniejszych. Nie wiem co jest przyczyna zawieszania. Moze kombinacje z biblotekami lub stare wersje opd i ussp-push z ktorych korzystalem? Podobno rowniez zalecany jest w bluez z cfs. Problem dotyczy tylko przesylania plikow. GPRS dziala bez zarzutu.
Musimy znalesc gdzies 'opd', 'ussp-push' i skopiowac je do /usr/sbin/
Shell# ldd /usr/sbin/opd
libopenobex-1.0.so.1 => not found
libbluetooth.so.1 => not found
Kod: Zaznacz cały
ln -s /usr/lib/libopenobex.so.1.3.0 /usr/lib/libopenobex-1.0.so.1
ln -s /usr/lib/libbluetooth.so.2.3.0 /usr/lib/libbluetooth.so.1
Shell# rfcomm
rfcomm0: 01:02:03:04:05:06 channel 1 clean
rfcomm1: 01:02:03:04:05:06 channel 6 clean
Przesylanie.
komputer --> komorka
Kod: Zaznacz cały
ussp-push /dev/rfcomm1 /dir/plik_do_wyslania plik_do_wyslania
Kod: Zaznacz cały
/usr/sbin/opd --mode OBEX --channel 7 --path /tmp/ --sdp --metadata