Hello,
I'm experiencing an issue while trying to use the Sony PS3 sixaxis under
Linux (Gentoo). The host machine is a PS3, I use bluez 3.22 out of the
box (no patches) on a 64 bits kernel. I followed the documentation at
http://www.pabr.org/sixlinux/
This is my first bluetooth/Bluez experience, so please forgive if I use
the wrong term or if I ask stupid questions ...
==== Problem Description ====
The sixaxis is not recognized by bluetoothd-service-input.
According hcidump, a connection is made from the device (sixaxis)
to the host controler but when trying to contact HDI on control
channel (PSM 17), bluetoothd-service-input generate an error:
"HIDP: Control: Virtual cable unplug".
As a consequence, the device try few more times to establish the
connection and then give up. Sixaxis is never recognized and
created on the host.
==== Investigations ====
Attaching GDB to the running hcid and bluetoothd-service-input
processes, I've isolated the following behavior :
**** bluetoothd-service-input side ****
At startup, it setup the callback mechanism from l2cap control
(psm 17) & interrupt (psm 19) sockets to the function
connect_event(). Later, when the device ask to open the psm 17 on
l2cap, connect_event() is called. Then :
connect_event() ==call=> input_device_set_channel() ==call==>
find_device() ==use==> GSList *devices;
In my case, GSList *devices is NULL, so connect_event() do a /* Send
unplug virtual cable to unknown devices */.
This point out that:
1- The device structure for the sixaxis has not been created
2- Having a device structure is a requirement to use HID
**** hcid side ****
Everything looks good here.
Once the device has completed the connection with hcid, the function
conn_complete() is called.
This one will :
+ Send a dbus system signal via hcid_dbus_conn_complete() :
signal sender=:1.3 -> dest=(null destination) path=/org/bluez/hci0; interface=org.bluez.Adapter; member=RemoteDeviceConnected
+ Read the remote name of the device
**** dbus side ****
Everytime the sixaxis tries to establish a connection with the host, the
following messages appear :
signal sender=:1.3 -> dest=(null destination) path=/org/bluez/hci0; interface=org.bluez.Adapter; member=RemoteDeviceConnected
string "00:19:C1:ED:21:31"
signal sender=:1.3 -> dest=(null destination) path=/org/bluez/hci0; interface=org.bluez.Adapter; member=RemoteNameUpdated
string "00:19:C1:ED:21:31"
string "PLAYSTATION(R)3 Controller"
signal sender=:1.3 -> dest=(null destination) path=/org/bluez/hci0; interface=org.bluez.Adapter; member=RemoteDeviceDisconnected
string "00:19:C1:ED:21:31"
**** Other ****
Just to be sure, the pairing has been done using sixpair.c => same issue
I've tested with the CVS versions of hcid and bluetoothd-service-input => same issue.
==== Need Help :/ ====
Could someone explains me what should be the process to establish a HID
connection via Bluez ?
I think bluetoothd-service-input should listen signals from
/org/bluez/hci0 and create a device structure when a
RemoteDeviceConnected signal is intercepted, but it doesn't seem to
work like this.
In bluetoothd-service-input, in which step of this process should the
create_device() function be called ?
Did I miss a something ?
Please find in attachment :
+ Output of "hcidump -w" while trying to establish a connection
+ Output of "dbus-monitor --system --monitor" while trying to establish a connection
+ Output of syslog while trying to establish a connection
# dbus-daemon --version
D-Bus Message Bus Daemon 1.0.2
Thanks in advance for your help,
--
creber
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Bluez-users mailing list
Bluez-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bluez-users