I just recently compiled a new 1.2.13 kernel, and added the APM patches to it. The kernel patched effortlessly, and upon rebooting, worked without a hitch.
Unfortunately, I discovered a few minutes later that my PCMCIA modem
no longer worked properly: it was dropping characters in its responses.
I checked with /var/adm/messages
, and discovered that
/dev/cua1
was getting something called an "input overrun",
which I assume to mean there's some sort of interrupt-handling problem,
or a new conflict in how the port is prioritized.
I am using a Megahertz XJ1144, which is a 14.4k modem, incorporating a slower 16450 UART. The "input overruns" may have something to do with this slower port, but I can't be certain. (Brief explanation: a 16450 buffers one character at a time, compared to a 16550, which buffers 16 characters at a time. The practical upshot of this is that the 16550 can go a much longer time without any attention from the CPU.)
The practical result of this is that I am primarily running the
APM-disabled kernel, since the modem is far more important to me. I
have written a small and somewhat silly program to show a readout of the current status
of the battery, by reading /proc/apm
and converting it into
a little bar graph. Another program which does this is available,
which is X-dependent. Although I run mine in X, it's text-based, and is
therefore suitable to a wider range of applications.
Sadly, most of the time, I can't use it due to the PCMCIA conflict. I haven't had the time to figure out how to conquer this problem, so it will simply have to exist. I don't know if this will be an issue with later models, which may have a more up-to-date APM BIOS. (The APM startup information says I have a Version 1.0 BIOS, whatever that may mean.)