Thursday 28 May 2009

Plugins, here they come


We now have plugins in gnome-bluetooth. The purpose is to allow third-party applications to offer additional setup steps for the Bluetooth device you just configured.

The above screenshot shows an example plugin that NetworkManager could provide, and with the click of a button, you'd have PAN set up between your computer and your mobile phone.

If your phone supports SyncML, then Conduit could show a button to allow setting up syncing, or when setting a GPS, you could have a button to set it up as the default GPS device for GeoClue.

Those plugin-provided widgets will also be available in a device properties dialogue for the Bluetooth preferences, when I get to it.

PS: Diego has kindly agreed to help out with the FreeFA organisation.
PPS: The widget layout is pretty broken, feel free to send patches through bugzilla.

Wednesday 27 May 2009

Dear Diego, let's have a wager

Diego, here's a little bet for you. The supporter of the losing team in tonight's final will organise the FreeFA tournament?

Friday 22 May 2009

Sixaxis support in BlueZ

Getting the Sixaxis PlayStation 3 joypad to work with Linux (in Bluetooth mode) is a bit of a pain. There were my various attempts at cleaning up the code lying around on the Internet, and hacks involving hidd.

The way to set the pad up in Bluetooth mode is fairly straight forward:
  • Open the USB device
  • Get the device's Bluetooth address through magic USB commands
  • Write your Bluetooth adapter's address in the pad (magic USB commands again), and then give the device back to the USB HID driver, so that it works as a pad through USB.
  • Set up the internals of bluetoothd so it recognises the device, and allows it to connect to your computer
  • When the device connects through Bluetooth, poke at it with magic commands again to enable its HID mode (code is already in bluetoothd's input plugin)
Yesterday I refactored my code as a bluetoothd plugin.

First up, detecting the device being plugged in. I wanted to use DeviceKit's GObject helper library, but it uses the D-Bus DeviceKit daemon which will be going away (note, this is just the DeviceKit daemon itself, not the -power, or -disks "sub"-daemons), in favour of libudev usage.

So I ported devkit-gobject to use libudev directly. Patch is currently being reviewed (it's in DavidZ's inbox), and it should show up soon in udev-extras under a different namespace.

After a bit of work, I had a bluetoothd plugin that detected PS3 pads being plugged in, and did the necessary work to make bluetoothd recognise it on plug.


Next, finishing up the libudev GObject helper library, and getting the bluetoothd plugin reviewed. And it would be nice to finally get the extra functionality merged into a hid driver in the kernel.

PS: Any info on the PS3 Headset or the keypad?

Thursday 21 May 2009

I really haz 5.1

As promised, gnome-volume-control in master now has fade and subwoofer support, as well as instant-apply for the default output selection. We just need to be able to set it up for 5.1 now...

I haz 5.1!

Monday 18 May 2009

Bluetooth support in NetworkManager

Over the past week, with rock star Dan Williams, we've been working on Bluetooth support in NetworkManager. You can now access the Internet using your Bluetooth mobile phone as long as:
  1. You want to use PAN, and not DUN
  2. You're ready to use the console to set it up
  3. and finally, you have the fixes lying on my hard-drive (or in Dan's e-mail inbox)
This should hopefully be working for Fedora 12.

Dell Mini 10, gah

A couple of months ago, I received a loaded Dell Mini 10, running a version of Ubuntu from last year, loaded up with proprietary and custom drivers.

If you look at it without giving a second thought at the kit inside, it's quite nice: nice 10" glossy screen, integrated webcam, 3G modem with GPS-A, dual-DVB-T tuner, Bluetooth, WLAN/Ethernet, HDMI output, SD card reader.

Try to run anything other than the shipped Ubuntu (and that even goes for a newer version of Ubuntu), and you'll be in the mud.

The graphics card is the PR problem that's Poulsbo. The wireless card is a Broadcom 4322, with no free drivers, the modem gives Dan Williams nightmares (see the Swedish Invasion part), and the touchpad's driver never got upstreamed.

Adam had a bit of luck getting the Poulsbo going on Fedora 10. I haven't been so lucky under F11 yet, and the wireless card could apparently work with the kmod-wl package from RPMFusion. As for the 3G modem, I'm sure we'll be able to work something out to make it work as expected with a bit of work.

I'll leave others to complain about the «Poulsbong» (as it's been nicknamed) graphics card, and focus on the touchpad. The Elantech touchpad is the kind of touchpad that would make me want not to buy this laptop. No separate buttons, you instead need to click at the bottom of the touchpad area, and that gets awfully tricky for drag'n'drops. Right, this laptop didn't cost me much.

The real problem with the touchpad is that it work to its full capabilities with the stock kernel's drivers (it will even stop working when psmouse can't resync with it). But the shipped Ubuntu could, and the kernel logs seem to point at a modified psmouse. So I drop a mail to Jorge Castro, who passes me on to the manager responsible for the Dell OEM stuff.

After many attempts at getting the source code for that obviously GPL driver, I get the answer:
I believe you're mistaken in assuming that the code we have is merely a
modified version of the psmouse driver, e.g. there's a user space
component as well.

Arjan's code appears to be different.
Arjan is the kernel maintainer for the Elantech driver, on CC: at the time. Well, I was pretty certain it was a modified psmouse, and strings on the driver proved that. Thanks to Jorge not wanting to let me down, we finally found the sources for the Elantech driver in 2 separate commits.

Why did it take 3 weeks of arguing with some middle manager as to whether the code was GPL or not to find out that it was 1) freely available but unfindable 2) it had Arjan's name in the copyright, but apparently wasn't open source, 3) never upstreamed.

We were not amused.

To sum this up:
  • Dell, stop putting Broadcom crap in your Linux laptops (that also goes for the fingerprint readers)
  • Intel, please get Poulsbo drivers up-to-scratch upstream
  • Broadcom, don't put crap in Dell's laptop unless you want to start doing real Open Source
  • Canonical, apply a clue-bat to your middle management to stop lying
  • Jorge, thanks for being patient with me
  • And thank you unnamed provider of laptops, you gave me a reason to rant

Wednesday 6 May 2009

An era comes to an end

I'm not changing jobs, or getting married, it's all a bit more important than that.

Totem's xine-lib backend is now gone in git master, for GNOME 2.28.

The GStreamer boys have come forward, fixed a lot of bugs, and implemented new features, which means that the GStreamer backend was getting held back by the features of the xine-lib backend.

Oh, and before people start complaining:
  • this is only in the development branch for now
  • if you haven't filed a bug about whatever problem the GStreamer backend caused for you, you're not allowed to complain