Category Archives: Gentoo

Distributed distributions

Does anyone know of any Linux/BSD/similar distributions that are employing a distributed/decentralized source code management system for their package trees?

To clarify, the difference that I’m interested in is as follows:

Distributed development tools such as git and mercurial allow everyone to clone the whole tree including all history. Everyone who does make a clone — let’s call it a branch — is able to commit new changes to their own branch, and can publish their branches. As everyone effectively has commit access, development hierarchy is built purely based on politics and personal standing (e.g. in the case of the Linux kernel, Linus is recognised as the boss, therefore his tree is ‘the one that counts’). Within reason, these systems all make it very simple (i.e. 1 easy command) to merge all the changes in someone elses branch into your own, even if the 2 branches are stored on different computers.

Centralized tools such as CVS and Subversion are different. There is a concept of ‘commit access’ to a centralized repository, and while anonymous read-only access may be granted for users who do not have commit access, such users can not make their own commits and do not have such an easy way of sharing their changes with the people who do have commit access to the centralized repository.

So, does anyone know of distributions that are using distributed systems for managing package trees? Gentoo uses the centralized approach — packages are maintained in CVS and we only give commit access to people who we certify and trust as Gentoo developers.

ZD1211 back in production

Since the Atheros acquisition, introduction of new ZyDAS ZD1211 USB-wireless devices has been concerningly slow.

Fortunately, some new ZD1211 devices have been popping up recently, based on new radio chips. After some help from the community, I managed to get my hands on the new types and write zd1211rw code needed to support these chips.

The first new chip, the AL2230S, only needed a few changes on top of the older AL2230 code. This radio is working well.

The second new chip is especially interesting: the Ubec UW2453. Ubec publish full technical specs for this chip, so we’re able to understand more than usual about the ZD1211 interactions with the radio. Maybe due to it’s complexity, the UW2453 isn’t performing quite as well as the other radios, but this should improve after time. I emailed ZyDAS some feedback about their UW2453 programming code – I think I spotted a few mistakes.

Third, we started seeing the already-supported AL7230B RF chip being combined with the ZD1211B base chip on some newer ZyXEL products. This particular combination was not supported before, but thanks to some testers on the mailing lists, the code has been written and submitted to support these.

Fourth, Atheros appear to have rebranded the ZD1211B chip as AR5007UG. These devices are appearing in Medion laptops, very popular in some parts of Europe. The first ones seem to be based on the UW2453 RF mentioned above. I’m especially interested to hear from people who have AR5007UG devices in other laptops or in standalone USB-dongle form, and also if they exist based on other RF chips.

All the above will be available in Linux 2.6.22, except UW2453/AR5007UG which will be available in 2.6.23.

On a final note, I moved the zd1211rw homepage to the new linuxwireless.org wiki. One nice feature here is that the zd1211rw supported devices list gets aggregated onto the more general Linux-supported USB wireless devices list, however we’re the only USB driver with device information published there at the moment.

Dell laptop LCDs not powering up on lid open event

My Dell Inspiron 640m laptop has some strange behaviour which irritates me: when the lid is closed, the display turns off as you might expect. However, when the lid is opened, the display remains off.

The workaround up to this point has been to use acpid to listen for “lid open” events, and then have an event handler which uses vbetool (or xset) to restore power to the display.

I’ve been digging deeper into this problem, and have realised that the above behaviour is entirely due to the behaviour coded into the system ACPI tables (DSDT). With just a few lines of code, this strange behaviour can be “corrected”.

I’ve posted a DSDT patch to fix this. To use it, you have to decompile your DSDT, apply the patch, recompile it, and then build it into your kernel. For interested people, there are plenty of DSDT-patching guides on the Gentoo Forums and similar.

After applying this fix, I can uninstall acpid completely and the screen blank/unblank “just works”. The above patch is suitable for Dell 640m and e1405 models, and possibly others too.

UPDATE: I’m working on kernel patches which will mean that no DSDT hacking is needed, and LCD resuming will really “just work”. Keep an eye on my weblog for more.

Widescreen Intel video BIOS hack no longer needed

Many of us with widescreen laptops which have Intel graphics chipsets have been unable to use wide display resolutions without running hacky programs (such as 855resolution or 915resolution) on every boot to patch the video BIOS.

The new xf86-video-intel-2.0.0 driver no longer uses the video BIOS, it does native mode setting. In other words, the 855resolution/915resolution utilities are no longer needed.

For Gentoo users: xf86-video-intel is named xf86-intel-i810 in the portage tree.

Using ketchup to quickly install kernel sources

ketchup is a neat utility to download and unpack a specific version of the Linux kernel sources into the current directory. It also does rather well on saving download bandwidth, i.e. if you have the 2.6.17 source tarball and ask for 2.6.18, it will only download the 2.6.17-to-2.6.18 patch.

Here’s a quick usage example, which installs the 2.6.21-rc7 kernel sources:

# emerge ketchup
# cd /usr/src
# mkdir linux-2.6.21-rc7
# cd linux-2.6.21-rc7
# ketchup 2.6.21-rc7

When ketchup has finished, you then have a clean set of kernel sources for that particular version in front of you.

I like to configure ketchup to use the same storage directory as portage, so that they can share kernel tarballs. In my ~/.ketchuprc I have:

archive = "/usr/portage/distfiles"

Hardware protocol analyzers

After learning of my involvement with USB drivers through a recent interview in a Gentoo Weekly Newsletter, Elias P has donated me a couple of hardware protocol analyzers:

The USB one should be useful with my current and future USB driver projects, and will be a useful tool to learn more about USB on the physical/electrical level. In addition, the vendor do provide Linux drivers but they are closed source, so I will soon be attempting to reverse engineer the protocol analyzer (oh the irony) in order to provide open drivers.

I don’t currently have a use for the I2C/SPI analyzer, so if you know of any open source developers who would find this useful in their projects, please send them this way. I’m happy to send this device on, provided that I can see that it will be used to aid open source development.

UPDATE: I2C/SPI analyzer was donated to David Brownell for Linux kernel SPI development.

Thanks Elias!

SFLC legal assistance for fingerprint projects

Now that NIST have finally made public information provided to me in private about their export control concerns, I wrote up a summary of the situation and approached SFLC about getting legal advice.

Shortly after, I am contacted by James Vasile, a member of their counsel. James has experience in this area and I anticipate some answers within the next few weeks. The process so far has been very simple and efficient, let’s hope the news is good news!

Brontes are hiring a Gentoo expert

Here at Brontes Technologies we are looking to hire a Gentoo expert to join the systems group and help out with maintenance and development of our internal Gentoo systems and our Gentoo-based embedded medical product.

The company is based just outside Boston, MA and after being recently acquired we have an exciting ‘mature startup’ atmosphere but also the resources of a big huge company. The product is an extremely cool handheld 3D scanning device, due for launch later this year.

The company recognises the benefits of open-source and tries to work closely with development communities and contribute back where possible. We also make a large effort to utilise the standard open source support tools where appropriate — as an example, we use catalyst to build our product release media.

This is a full-time office position. If you are interested, see the full job description. To apply, email your resume to the address listed on that page, mentioning that you read about the position on my weblog.

Fingerprint export control news

I just noticed that the fingerprint group at NIST have dropped NFIS2 and created NBIS: NIST Biometric Image Software.

NBIS is split into 2 parts:

  • NBIS Non-Export Control: fingerprint quality analysis and feature detection tools. Source code available for download with no distribution restrictions.
  • NBIS Export Control: fingerprint comparison utilities. Not available for download, CDROM must be requested.

This is good news – it is now much clearer which parts of NIST’s software are subject to export control concerns, and additionally, NIST have clarified the reasoning:

It is our understanding that NFSEG and BOZORTH3 fall within ECCN 3D980, which covers software associated with the development, production or use of certain equipment controlled in accordance with U.S concerns about crime control practices in specific countries.

Unfortunately the freely downloadable part is not enough to finish dpfp or create a generic fingerprinting library, because the code required to actually compare fingerprints is only present in the export controlled part. However, I’m now in a position to continue researching the legal issues.

Pressing questions I’d have for any experts here:

  • What are the impliciations of ECCN 3D980 for an open source project?
  • Can I legally export the NBIS Export Control CDROM to the UK without having to fill out any associated paperwork?

Wireless Summit II

Earlier this month, I met with 25 other contributors at the 2nd Linux Wireless Summit. This was a followup from the 2006 summit.

The meeting happened in London and was scheduled to occur immediately after the IEEE 802.11 working group meeting. This enabled us to get some kind of vendor attendance.

While we had this opportunity, one of the biggest topics was discussion of why vendors still aren’t playing nice in releasing open source drivers (or providing the resources to let the community do so). The vendors in the room confirmed our suspicions – vendors are afraid of the FCC and other regulatory agencies who place restrictions on frequencies and power levels which these devices are legally allowed to transmit as.

Matt Norwood from the Software Freedom Law Center was in attendance and had studied the FCC regulations in some detail. The conclusion is that the FCC rules are vague and while they don’t explicitly say that open source drivers are not allowed, vendors are not prepared to risk falling out of compliance and are playing it safe (or not playing at all). Unfortunately there is no short term solution to this: it would take years for the FCC to clarify the regulations. Short term workarounds such as finding ways to encourage vendors to produce open drivers with only the regulatory part closed (such as Intel’s ipw3945 offering) are under investigation.

The other large topic was the merge of the new wireless stack (d80211) which was donated to the community by Devicescape. The stack has many more features than the current in-kernel ieee80211/softmac stack, and improves consistency between drivers. We are now much closer to getting d80211 merged into mainline Linux, but there are still some significant technical issues to be resolved.

Before the conference, several people asked me if I could raise issues with the suckiness of Intel’s ipw3945 driver offering in that it relies on this awkward closed-source userspace daemon. Fortunately Intel have found a way to rewrite their firmware so that the regulatory domain control is no longer at the driver level, therefore a fully open-source driver with no binary userspace part has been developed (iwlwifi). Although Intel have not yet announced it, the source code has been released here. This rewritten driver uses the d80211 stack mentioned above, so it’s not possible just to compile it against mainline Linux at the moment. The iwlwifi website includes instructions for how to check out the wireless-dev tree where d80211 is being held.

All slides and notes from the conference can be found here. Stephen Hemminger wrote a more detailed summary. Also, one other significant product of the summit was a central information source aimed at Linux wireless users – we have now launched linuxwireless.org.