HowTo Fix ACPI + ICH7 family (Conexant) Driver on Toshiba P100/105 series
SUSE / openSUSEThis Forum is for the discussion of Suse Linux.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
HowTo Fix ACPI + ICH7 family (Conexant) Driver on Toshiba P100/105 series
HowTo Fix ACPI + Sound on Toshiba P100/105 series with CONEXANT ICH7 family codec on SLED 10.
Update 25/06/07 This HowTo is useless for SLED 10 SP1
I decided to write this howto due to common problems Toshiba users have with the buggy BIOS provided by Toshiba itself.
This howto is intended for SLED 10 users but; with the right tools, might also apply to any openSuSE or Debian/Ubuntu based distributions.
I must say that I'm not any kind of SLED guru or anything close to it. My knowledge in Linux is from medium to basic nevertheless I have about 2 or more years of experience and ever since I do not use MS Windows anymore.
In order to have a better understanding of this howto, is necessary to have some basic knowledge in VI or VIM editor (use $ man vi at command line to have some info regarding the editor commands)
Disclaimer: Use it at your own risk!!!
1.Update/Upgrade your BIOS to version 2.40 (This howto is based on this BIOS and if you decide to upgrade to version 3.30 this howto might be useless).
2.Right click on your desktop and open a terminal. Execute the following command:
Code:
$ sudo cat /proc/acpi/dsdt > dsdt.dat
This will display some warnings or errors but at the end you will have the dsdt.dat file in your home directory.
3.Now we will decompile the dsdt.dat file to generate an editable one by executing the following command
Code:
$ iasl -d dsdt.dat
NOTE: SLED 10 already comes with the Intel DSL Compiler (at least in my case).
This will generate a editable dsdt.dsl file which we will change just by executing the following command:
4.
Code:
$ gedit dsdt.dsl
5.Replace ``Name (_HID, "*PNP0C14")'' by `` Name (_HID, "PNP0C14")'' and search for "Linux" and comment the if-else structure and add: "Store (0x07D6, OSYS) // Fake Windows 2006" between the 2 last closing curly braces as shown in the next example:
Store (0x07D0, OSYS) // If (CondRefOf (_OSI, Local0)) // { // If (_OSI ("Linux")) // { // Store (0x03E8, OSYS) // } // Else // { // Store (0x07D1, OSYS) // If (_OSI ("Windows 2001 SP2")) // { // Store (0x07D2, OSYS) // }
// If (_OSI ("Windows 2001.1")) // { // Store (0x07D3, OSYS) // }
// If (_OSI ("Windows 2001.1 SP1")) // { // Store (0x07D4, OSYS) // }
// If (_OSI ("Windows 2006")) // { // Store (0x07D6, OSYS) // }
// If (LAnd (MPEN, LEqual (OSYS, 0x07D1))) // { // TRAP (0x3D) // } // } // } Store (0x07D6, OSYS) // Fake Windows 2006 }
6.Save your file and recompile it by executing:
Code:
$ iasl -tc -f dsdt.dsl
NOTE: You will get very many warnings and errors but the binary DSDT.aml will be created so now let's take care of this new file and as root (su) copy it to your /etc directory by issuing the following command:
Quote:
$ su ##(don't forget to write down your password :=))
Code:
# cp DSDT.aml /etc
7.Now let's modify our /etc/sysconfig/kernel file to tell it look for our new DSDT.aml created file
Code:
# cp /etc/sysconfig/kernel /etc/sysconfig/kernel.orig ##(this is to back up our file in case you want to go back to your previous settings)
Code:
# vi /etc/sysconfig/kernel ##(search for ACPI_DSDT=" " and change it to say ACPI_DSDT="/etc/DSDT.aml"). Save it !!
8.Execute:
Code:
# mkinitrd
# shutdown -r now
(to reboot your system so changes take effect)
In case you have booted with no single problem proceed to Nr 9. If you have any problem, STOP this howto, boot into runlevel 3, delete /etc/sysconfig/kernel and back up your original one by executing the following commands as root:
Code:
# cd /etc/sysconfig
# rm kernel
# mv kernel.orig kernel
# mkinitrd
# shutdown -r now
(and this will bring you back to your last stage and try to get help some other place ).
UPDATE (09/03/2007)
ALSA-Driver-1.0.14rc3 has been released. You DO NOT need to patch anymore.
9.SLED 10 comes with ALSA 1.0.12 and this version does not have the fix we need for the CONEXANT codec. Plus, there was a major fix specialy for this driver in 1,0,14rc2 (Now rc3) version which is still in development. So let's Download ALSA driver 1.0.14rc3 (at this time) and let's back it up .
NOTE: You will need your kernel sources and devel tools
Code:
# tar -zcvf original-drivers.tgz /lib/modules/`uname -r`/kernel/sound
(this will back up our original drivers just in case).
Execute the next commands in that order
Code:
# cd /usr/src
# mkdir alsa
# cd alsa
# wget ftp://ftp.alsa-project.org/pub/drive....14rc3.tar.bz2
# tar -jxf alsa-driver-1.0.14rc3.tar.bz2
# cd alsa-driver-1.0.14rc3/alsa-kernel
# ./configure --with-debug=detect -–with-cards=hda-intel --with-sequencer=yes
# make ; make install
# dmesg -c >/dev/null ##(this will clear dmesg prior to loading the new driver)
# lsmod |fgrep snd ##(to stop all audio and drivers)
# chmod a+rw /dev/dsp /dev/mixer /dev/sequencer /dev/midi ##(/dev/midi will probabily give u an error.. no worries)
# modprobe snd-hda-intel ##(to load the driver)
# cd ..
# wget ftp://ftp.alsa-project.org/pub/drive....14rc3.tar.bz2
# tar -jxf alsa-lib-1.0.14rc3.tar.bz2
# cd alsa-lib-1.0.14rc3
# ./configure; make; make install
# cd ..
# wget ftp://ftp.alsa-project.org/pub/drive....14rc3.tar.bz2
# tar -jxf alsa-utils-1.0.14rc3.tar.bz2
# cd alsa-utils-1.0.14rc3
# ./configure; make; make install
# alsamixer
(see that everything is unmuted “00”)
10.The last and best thing is to use Yast to configure your soundcard by
# yast2 --> Hardware > Sound and edit your card for changes to take effect.
Remarks:
Quote:
This BIOS issue has already been fixed in Kernel v2.6.20 AFAIC.
The CONEXANT driver patches will be released in alsa-driver-1.0.14 final AFAIC.
Also, in Step No. 6 when I type cp DSDT.aml /etc, the computer does not find the DSDT.aml file. The only file found is the same one but in lower case: dsdt.aml. So I typed the command with that one, but what worries me is that this file has nothing inside. I mean, it has 0k. Is that fine? or I did something wrong?
Ok.
Thanks for your comments.
First things frst! Let's fix your compiling problem problem.
How about installing the C compiler and the rest of the development tools?
Yast>>Install/Uninstall Software
Select "Patterns" in Filter and and check the "C/C++ Compiler and Tools" I have selected all 'cause I've compiled some other programs but you will NOT need "gettext, flex, cvs, subversion, valgrind" and some other that I do not remember right now but you can always uninstall them after this.
Install "kernel-source" (Maybe you will need the 5 SDK CDs. Not quite sure)
After all this is installed start again the howto and tell me how this is going.
Kind Regards.
Luis C. Suárez
PS. The DSDT.aml file is created in the same directory where you are working. It cannot be 0 KB... there must be something you are missing. Do you have the Intel DSL compiler installed?
EDIT: I supposse that if u r already in step 6 you must have the Intel DSL compiler installed, however there must be something wrong.
Regardig to the development tools you must also install alsa-devel (I'm not sure if this is the only one I've missed, However, I'll give u a very good hint on the devel tools you need in my next post whe I arrive home :=)
Thanks for replying my mail. First of all let me tell you that I am running Suse Linux 10.2 with the kernel: 2.6.18.8-0.1-xen.
the second thing is that I have already installed the compilers
and finally, probably somenthing is wrong in my machine since there is no .aml file on my computer but the DSDT.aml with 0 kb.
If you want, tell me the time you will be sitting down in your machine, so that I contact you on time.
I also thought that I could not install the new alsa driver because there was something wrong with the file,and I found out that there was a patch called 45362-001.bin but I could not install the file. So I am in the same position I was before.
Thanks for replying my mail. First of all let me tell you that I am running Suse Linux 10.2 with the kernel: 2.6.18.8-0.1-xen.
the second thing is that I have already installed the compilers
and finally, probably somenthing is wrong in my machine since there is no .aml file on my computer but the DSDT.aml with 0 kb.
If you want, tell me the time you will be sitting down in your machine, so that I contact you on time.
Thanks for your help.
Oh yes!, I read so fast that I did'nt noticed you had installed 10.2 version. I run into some issues installing openSuSE 10.2 on this machine. As a matter of fact, I couldn't even boot it. Toshiba laptops seem not t be very friendly with linux, however, SLED 10 seemed to have everything to run just fine except for this sound issue.
I'm runnning 2.6.16.27-0.9-smp kernel and I believe you are running a much better kernel version but really have no idea if that should be an issue (I don't believe so).
Right in this page, probabily is the best answear to your ACPI problem since this guy seems to have a model closer to yours and to be running SuSE 10.2 version AFAIK. Your linux skills must also be a little better than mine since patching a kernel is never an easy task :=). But I'm really sure you can fix the problem.
Regarding the alsa-driver issue, I exactly don't know what you mean with the patch 45362-001.bin (I have installed this driver on this box and on another old toshiba with Ubuntu 6.10 with no single problem), but right now I'm writing to Tobin Davis to take a look to this post to see if he can be of any help (I believe much more better than mine ).
Regards
Luis.
PS. ALSA-driver-1.0.14rc3 does not need to be patched. It has all enhancements for CONEXANT 5047 Codec (Renamed to CX20549 (Venice)) and 5045 (Renamed to CX20551 (Waikiki))
EDIT: If you have BIOS version 3.50 instead of 2.4, then Download this file and use the dsdt.aml provided instead of what I'm telling you. I've not tried it but it could solve all your problems
sheppard: This is the first time I've heard of a build issue with OpenSuse 10.2 and alsa 1.0.14rc3. Could you doenload my integrated build environment an try it? http://members.dsl-only.net/~tdavis/my-build.tar.bz2
To build from this tarball:
tar -jxvf my-build.tar.bz2
cd my-build
sudo make
This will build 4 rpms: alsa-driver, alsa-lib, alsa-lib-devel, and alsa-utils
To install them, type "sudo audio-install".
If any of this process fails, let me know, and I'll try to reproduce your build environment here.
Thanks for the information. Just fixing the DSDT worked on my system: Toshiba Satellite P105-S177, SuSE 10.2. I don't know what the deal was with my system though. Long before finding your post I had decompiled my DSDT to get the parameters to force Windows emulation. I entered acpi_os_name="Windows 2006", which according to the dsl code should have worked like the DSDT fix as it should have entered a branch statement and set the OSYS to Windows 2006 (0x07D6), but it did not work, so I'm thinking the kernel must not have been able to change the _OSI value. I recompiled with your simple change by commenting out everything in that branch section and hard coded the value. I did have to apply the fix for ALSA. Either my card, which is Intel ICH7 HD, is not using the Conexant codec, or SuSE 10.2 ALSA 1.0.13-22 has the patch applied already. I new it has to be something with ACPI breaking it though as sound worked when I disabled:
apm=off acpi=off noapic
So, many thanks to you for posting this. I may never have tried to just hard code the value were it not for your write up.....thanks thanks thanks :-D
All I did was searched for Linux then found this code and changed it like I have here:
[
Code:
If (CondRefOf (_OSI, Local0))
{
/*If (_OSI ("Linux"))
{
Store (0x03E8, OSYS)
}
Else
{
Store (0x07D1, OSYS)
If (_OSI ("Windows 2001 SP2"))
{
Store (0x07D2, OSYS)
}
If (_OSI ("Windows 2001.1"))
{
Store (0x07D3, OSYS)
}
If (_OSI ("Windows 2001.1 SP1"))
{
Store (0x07D4, OSYS)
}
If (_OSI ("Windows 2006"))
{
Store (0x07D6, OSYS)
}
If (LAnd (MPEN, LEqual (OSYS, 0x07D1)))
{
TRAP (0x3D)
}
}
*/
Store (0x07D6, OSYS)
}
Yup.. I'm just so tired of trial and error and I've just decided to abandon ubuntu gutsy for quite a time (maybe for good in this laptop)
I have openSuse 10.3 and Mandriva 2008.0 running just perfect in this laptop with no custom DSDT file.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.