Page 1 of 1

PC Beep Volume - Hardware/Driver Experts Please Help

Posted: Fri Sep 15, 2006 2:54 pm
by lev
Hi all,
Just got my new X60s, and I like it a lot, many details I like about it (the keyboard feel, the thinklight, the trackpoint, and so on) and a few I would change if I could (switch the fn and ctrl keys, move esc where f1 is, remove the browser keys), etc. One thing that I would like to change, and feel ought to be possible, is the volume of the various beeps. I think the beeps are useful (especially the "you just pulled out the power cord" and the "I'm still trying to go to sleep, don't pick me up just yet" beeps, but they are very loud in comparison to the rest of the computer's sounds). I've read other people complaining about this, so I don't think it's that my X60s is simply faulty. I know it's possible to deactivate the various beeps (either in BIOS, or with PS2 utility, or some of them with the power manager, and the "you pressed too many keys at once" my disabling a hidden device in windows device manager), but as I said, I find them useful, just wish they weren't so loud....

So I did some research. The X60s apparently used the AD1981HD codec, whose datasheet is here:
http://www.analog.com/UploadedFiles/Dat ... 81HD_0.pdf
and the block diagram on page 1 indicates that it can take either analog or digital "PC BEEP" input. It also shows that there is a gain control for the PC BEEP (part of NID:0D), so, on the assumption that the beeps are wired through either the analog or digital PC BEEP on the AD1981HD, it ought to be possible to change their volume. Now, the windows "master volume" applet doesn't give me an option to change PC BEEP volume (it has Master, Wave, SW Synth, Microphone, CD Player) as options. However, my understanding is that intel HD audio should be possible to control with a generic driver, so I'm hoping perhaps someone knows a generic HD driver with more controls than the windows volume applet (or maybe registry settings or similar, to activate additional controls).

Alternatively, I'm assuming that ALSA, or other open-source sound architectures, probably give you a large degree of control over setting all the different audio hardware registers, so maybe someone running Linux on their X60/s has managed to reduce the beep volume? Or has tried, and can show that my guesses for how the audio hardware is wired up, are wrong, and I should give up on trying to perform this particular tweak.

Thanks for any advice or pointers,
Lev

PS: One tip I've discovered, which I've never seen written anywhere, is that when the windows volume applet is open, you can press ctrl-S to toggle it between a large and small mode. Which is handy on the small screen of the X60/s.

more info on X60s audio hardware

Posted: Mon Sep 18, 2006 11:33 am
by lev
So I've done some extra investigating. The AD1981HD drivers have a registry key called InitVerbs, which seems to let you send additional verbs to the codec, on top of what is in the BIOS verb table. For me it is at:
\HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E96C-E325-11CE-BFC1-08002BE10318}\0000\InitVerbs

So I added a verb to control the appropriate pin Configuration Default registers (verb ID 0x71F) for the Beep input pin (NID 0x16), to set the Port Connectivity (bits 31:0 of the CD register) to 00b (jack) instead of 01b (no connection). After restarting the driver, now the windows volume control applet has a slider for PC Speaker, but unfortunately, it has no effect. Nor was I able to get any useful effect by playing with adding other verbs to the registry. So, I'm guessing the PC Beep on thinkpads is not routed through the AD1981HD, but rather is mixed with the output of the codec. So I'm stuck again. Anyone got any ideas? Anyone opened their X60/s up and worked out the audio routing? (Or got photos of their main board so I can try to decode it myself?)

If anyone feels like tinkering with the AD1981HD settings this way, I recommend the Intel HD Audio specification, from:
http://www.intel.com/standards/hdaudio/

Maybe you'll find it useful for changing the microphone bias setting, or the microphone input amplifier (to drive special microphones, or save power), or for hardware modding....

Lev