To get ps3joy.py running in Karmic, you will have to follow the two following steps:
Upgrade pybluez to version 0.18
Recent kernel versions are stricter about checking parameters to bind. As a result you need a pybluez version of 0.18 or greater to run ps3joy.py.
If you are running 64-bit Karmic, install this precompiled package.
For other debian distributions, you can try the following instructions (you may need to tweak the version numbers and install missing build-dependencies):
apt-get source python-bluez cd pybluez-0.16 uscan cd ../pybluez-0.18 dpkg-buildpackage dpkg -i ../python-bluez_0.18-*.deb
Disable interception of HID devices by bluetoothd
Whenever you try to pair the joystick, udev will automatically load bluetoothd, which will intercept the connection requests before ps3joy.py can get them. If the driver says it is waiting for a connection, but you can't pair, this may be your problem.
Two methods are proposed to fix this problem. The first one is recommended as it does not completely disable bluetooth on your computer.
Method 1: Tell bluetoothd not to intercept HID devices
This change will prevent other bluetooth input devices from working. (Note that ps3joy currently disables bluetoothd when it starts, so you will always have bluetooth problems when using ps3joy.)
Add the following line in /etc/bluetooth/main.conf:
DisablePlugins = input
You can remove this line later if you wish to use other bluetooth input devices.
Method 2: Prevent bluetoothd from being loaded by udev
You should only try this method if the previous one does not work, as it will completely disrupt bluetooth on your computer, even when ps3joy is not running.
You need to edit /lib/udev/rules.d/97-bluetooth.rules to disable loading of bluetoothd. Simply comment out the line referring to bluetoothd:
# Run helper every time a Bluetooth device appears # On remove actions, bluetoothd should go away by itself # ACTION=="add", SUBSYSTEM=="bluetooth", RUN+="/usr/sbin/bluetoothd --udev"
You can re-enable bluetoothd by uncommenting the line.