Progress report: Sleep, Audio, and Power
It's been a month since my last post, and things are moving along. We've been hard at work improving both the hardware and software. There's a backer update describing much of what we've been up to, and snce I'm working with the kernel I'll go into some detail on the developments of the past month as well as what we're working on now. I'll talk about the three major areas of improvement in the last month: suspend/resume, audio, and power.
We're running kernel 3.16-rc2 (up from 3.14-rc4), which brings with it a bunch of new changes. Newer kernels usually mean more things work, and this release is no exception. The big change that comes with 3.16 is the introduction of working suspend/resume support, meaning you can now select "Suspend" from the power management menu and be confident in it resuming from sleep. We had to patch in suspend/resume support for PCI Express, which requires a workaround to reset the actual PCI Express port, but that patch is minor, and will be included upstream eventually anyway.
Speaking of upstream, we've been working on getting our audio drivers included in mainline Linux. We've gone through seven revisions of the driver, and we're pretty happy with where it is now. Audio recording works well, and the audio driver is generic enough that we can use it in future products. Right now we're waiting on final approval, but that should come soon. Once we get support for it, there's nothing standing between us and including Novena in mainline. We also identified a bug that could cause audio to stop entirely under heavy system load. Loads that are common, say, when listening to music and doing a four-core compile on an SSD. Hypothetically.
The other major component we need to work on before shipping is Senoko support. Senoko is the name of the battery board, and is the most user-visible power management component. In the laptop model, Senoko is responsible for controlling power on/off, well as battery charging, and should be available for use as a realtime clock if necessary. The current operating system is crufty, and was cobbled together while I learned how to program a Real Time Operating System -- which, incidentally, is surprisingly very different from programming a regular Operating System. SenokoOS is based on ChibiOS, and in the midst of rewriting everything to be more stable, we're also porting from ChibiOS 2.6 to ChibiOS 3.0. The initial rewrite should be done next week, giving us lots of time to test before shipping.
Bunnie and I hang out during the week on #kosagi on the OFTC IRC network. Come join us if you've got questions, or are curious about the development process!