450 Telcos suck

Due to cockups and/or willful sabotage by the telcos my ISP relies on for its DSL services, I am unreachable by email starting early this morning (UTC) and until further notice. My primary MX is off the net, mail is spooling on my backup MX so nothing should be lost.

<expletive deleted>

Update 2011-04-05: stupid telco finally rebuilt the line properly. I’m back, no mail lost at first glance and I’m slowly digging into that pile of mail. If you don’t receive a reply by tomorrow, please resend.

forked-daapd: v0.14

forked-daapd v0.14 is available. This release includes a number of improvements to the sort headers/sort fields handling by Kai that got entangled into a larger database revamp at the end of last year. That will be the subject of the next release.

Also in this release:

  • better handling of tags for TV shows
  • better handling of DRM-afflicted files
  • configurable IPv6 support
  • fixes to the URL file scanner
  • misc fixes

This release performs a heavy database upgrade process that dumps and reloads the files table; this can take some time on big libraries, so please be patient while this process takes place. You should backup your database file before upgrading, just in case.

See you in about two weeks for 0.15 with some database speedups that will finally see the light :-)

Tarballs available at http://alioth.debian.org/~jblache/forked-daapd/ ; GPG signatures made with my Debian key F5D65169.

pommed v1.38: MacBookPro8,*

pommed v1.38 is out and adds support for the Early 2011 MacBook Pro machines:

  • MacBookPro8,1: 13″
  • MacBookPro8,2: 15″
  • MacBookPro8,3: 17″

These machines have a new keyboard/trackpad assembly, the WellSpring 5. You’ll need a patched kernel or a kernel recent enough that it has the USB HID quirks for the new assembly; that’s 2.6.39-rc material.

This release also adds a new config item that allows disabling the audio support in pommed entirely. The audio hotkeys are fairly well supported in desktop environments nowadays so you’ll probably want that if you’re using one.

forked-daapd: v0.13

forked-daapd v0.13 is available! This release has been in the making for a long time, got delayed for a lot of reasons and had its content changed a few times along the way. Nonetheless, it’s here now and if all goes to plan at least a couple releases should appear in the coming months, say before the summer.

In this release:

  • support for Remote 2.0
  • support for per-speaker volume control
  • support for RAOP retransmission
  • improved compatibility with the 802.11g AirPort Express
  • support for sort field metadata
  • support for JPEG artwork and more alternative filenames
  • fix for Murmur hash on 32bit platforms
  • improved mDNS address resolution, making IPv4 usable again
  • support for FFmpeg 0.6 (moving away from deprecated APIs)
  • DAAP session expiration has been disabled
  • misc fixes

Thanks to all the contributors that sent bugs and patches for this release! I know development doesn’t go quite as fast as some would like, but keep in mind that I’m doing this in whatever free time I have and that the public git tree doesn’t tell the whole story. There are several parallel feature branches you don’t get to see, for instance.

Hopefully 0.14 will appear in a few weeks.

Tarballs available at http://alioth.debian.org/~jblache/forked-daapd/ ; GPG signatures made with my Debian key F5D65169.

Digi AccelePort driver 1.3-21 available for Squeeze

Long time no see! I’ve just packaged Digi’s latest dgap beta release, dgap 1.3-21, for Squeeze.

The packages are available at the usual address, using this APT source:

deb http://debian.technologeek.org squeeze non-free

I have made some changes to the packaging as far as udev and firmware loading is concerned, but this is nothing major. Firmware files moved out of /usr, along with udev-related utilities.

Should you notice any issue with the packages or the APT repository, please let me know.

The previous packages, version 1.3-15, are still available for Lenny, APT source unchanged:

deb http://debian.technologeek.org lenny non-free

QLogic QLE73xx InfiniBand adapters, QDR, ib_qib, OFED 1.5.2 and Debian Squeeze

A few weeks ago, I’ve had to look into getting a QLogic QLE7342 InfiniBand adapter working on a Debian Squeeze system, with OFED 1.5.2. This post will probably save quite some time to anyone trying to do the same; it applies to all the QLogic adapters supported by the ib_qib kernel module.

Note: on the ibverbs side of things, the adapters are supported by the ipath plugin, just like older QLogic adapters (that use the ib_ipath kernel module).

First of all: grab a recent version of the ofa-kernel package. The ib_qib module in ofa-kernel from OFED 1.5.2 did not work at all for me. I used the ofa-kernel snapshot from 20110203.

There are two things to know about the QLogic adapters:

  • they don’t autodetect the fabric speed by default, a dedicated utility has to be used to set the speed(s)
  • the driver exports a sysfs-like pseudo-filesystem, ipathfs, that needs to be mounted

QLogic offers a complete IB stack based on OFED and dubbed “QLogic OFED+”. The complete package weighs in at over 500 MB and contains the QLogic-blessed drivers, OFED stack, libraries and, of utmost importance to us, the QLogic-specific utilities.

Unfortunately, as simple as the QLogic utilities are, they don’t come with source. The package also only exists for RedHat 4 and 5.

So, go to the QLogic support website, select your hardware and download the QLogic OFED+ Host Software for RHEL 5 package. In the tarball, one directory contains the OFED stack and another contains all the utilities (QLogic-Tools.*).

For setting the adapter speed, you’ll want the iba_portconfig utility along with the initscript (shipped as iba_portconfig.sh). The desired adapter speed is set in the initscript by choosing the proper arguments to iba_portconfig (-s 1 for SDR, -s 2 for DDR, -s 4 for QDR or any combination thereof).

The iba_portconfig initscript must run after the drivers have been loaded. Which brings us to loading the driver and mounting the ipathfs.

This is all handled by the openibd initscript provided in ofa-kernel (under ofed_scripts/) and its companion script dedicated to QLogic adapters, truescale.cmds.

This initscript will load the OFED stack and drivers; if a QLogic adapter is present, it’ll mount the ipathfs in the right place.

Voila, once this is done, the adapter should happily report itself ACTIVE/LinkUp.

forked-daapd: future directions

I’ve got a few mails lately enquiring about the lack of visible activity on forked-daapd in recent times. Well, for one, I’ve been busy with other things, but there’s also been some non-public activity.

So, here’s what should happen in the next few months, in no particular order:

  • overhaul of the database schema and code;
  • metadata handling will (finally, probably) move away from ffmpeg;
  • release of the libdispatch-based forked-daapd code.

The database overhaul will bring a much-needed speedup on small devices and big libraries. It’s being worked on, but it ground to a halt with new year and all. Hopefully it’ll resume soon.

I’m also giving up on ffmpeg for metadata extraction. It doesn’t work well at all (as everybody knows by now) and it’s actually getting worse and worse. With the ffmpeg takeover/fork (call it whatever you want) it’s unclear what’s going to happen on this front. So I’m giving up and the metadata scanner will probably switch to using TagLib (one more dependency, yay).

Last, but definitely not least, the libdispatch codebase should finally see the light at the end of the tunnel in the coming months. I’ve been working on this since July last year, moving away from libevent. If you never heard about libdispatch, or Grand Central Dispatch, read my previous post on the subject. I’ll talk about it in more details at a later date.

Finally, as far as Squeeze is concerned, I plan to provide forked-daapd backports as long as it’ll be practical to do so.

This is it for now. I don’t have a “one more thing” in my sleeve, sorry. Time is at a premium right now, so big things have to wait.

pommed v1.36/v1.37: updates, fixes, MacBook7,1

pommed v1.36 is out and brings support for the MacBook7,1, along with a few fixes and updates.

A typo in the pmac keyboard backlight has been fixed, so fading now works there too. Product IDs for the ANSI and JIS keyboard variants for pmac machines were also added. It’s been like forever since I last touched that code; not a lot of people still use those (great) machines.

This release also contains a small update that will make it compatible with future kernel releases as applesmc will no longer have a fixed a name and location in sysfs.

Update: I just noticed a bug in 1.36, so 1.37 is out now. It also contains two patches that were submitted through Alioth.

Performance analysis and profiling tools for sequential and parallel codes

As part of my work for EDF, I’ve had to package and integrate a set of tools for performance measurement and profiling of HPC code. This toolbox comprises tools for analysis of both sequential and parallel codes, MPI communications profiling and, of course, visualization frontends.

Without going into too much details, here’s the list:

  • OpenSpeedShop: a complete performance and profiling workbench, including I/O and MPI
  • PerfSuite: a relatively simple and easy to use performance analysis toolkit
  • TAU: a complete performance analysis framework including automatic instrumentation with PDT
  • Scalasca: a tool for performance optimization of parallel codes, including MPI communications
  • a number of dependencies: slog2, Open Trace Format libraries, VampirTrace, dyninst, monitor, perfctr, pfmon, PAPI, …
  • visualization frontends: paraprof, jumpshot4, cube3, …

If you’ve been anywhere near HPC code, the names probably ring a bell; they’re the best tools out there in their category, developed and used by the top laboratories.

Over the past year, all the tools have received some level of testing, meaning we know they do work at the very least to some extent. As you can imagine, testing such tools is no easy task and takes an insane amount of time and resources of all kinds.

Testing is all the more important that I had to produce a number of patches to integrate the tools properly in the distribution and, in some cases, to even get them to build.

Now, we would like to share this work with the HPC community in and around Debian. How exactly we are going to do that isn’t clear just yet; most probably, we’ll end up building a team with other interested parties and offer our packages as a base to build upon.

There are a number of challenges with these tools: they’re not easy to build, they’re not easy to maintain, they’re not easy to use, they’re not easy to understand. Basically, nothing is easy. Some of those tools were never meant to be packaged and integrated in a distribution and no sane amount of patching will fix that, so we have to live with packages that aren’t quite as polished as we like them to be.

And then, there are licenses. Some tools are non-free due to usage restrictions. Others rely on non-free dependencies. Although I’ve been looking at the licenses, a thorough license check will be required and decisions will need to be made.

It’s not for the faint of heart! If you are interested in these tools and in bringing them to Debian, please get in touch.

I’ve also had to package the Apache Derby database (Java); if someone out there cares about Derby, I’d be more than happy to provide my packages as a start base for getting Derby into Debian. The packages need some work by someone who knows a thing or two about Derby and who can test and enhance the packaging of the server part.

OFED 1.5.2 for Debian

A few weeks ago, I’ve been busy at work updating the OFED packaging for OFED 1.5.2. We needed a version of the stack newer than what’s (partially) available in Squeeze. As this has now been tested, we are all happy to contribute this work to Debian, courtesy of my customer, EDF.

This morning, I’ve pushed out packages for OFED 1.5.2 to the pkg-ofed SVN repository on Alioth. The packages should be made available in experimental at some point too, though a number of them will have to go through NEW.

With this update, I’ve cleaned up & updated the packaging where needed and also made two important changes that I need to highlight:

  • package versions are now formed by the package version given in the BUILD_ID file shipped with OFED, postfixed with the OFED release they belong to. This gives, for instance, libibfoo 1.3.6-OFED-1.5.2-1. This makes it easier to identify OFED components and the OFED release they come from.
  • InfiniBand driver modules for libibverbs have been renamed to ibverbs-driver-foo and the libibverbs modules are now installed to /usr/lib/ibverbs/drivers. This cleans up the packaging as the shared objects, that were previously shipped in libfoo packages, are not shared libraries but modules for libibverbs.

A number of libraries have changed their interfaces and bumped their soversions. libibcommon is gone, it has been folded into libibumad. The API/ABI between libibverbs and the IB driver modules has changed, so the new libibverbs comes with appropriate Breaks in place.

Thanks to BenoƮt Mortier from pkg-ofed for his 2-day IB & OFED crash course that was instrumental in getting started with the OFED maze.