Linux on the Toshiba U505-S2960
Author: Michael Minn (www.michaelminn.com)
January 31, 2010
Describes how to set up an Ubuntu 9.10 operating system on a Toshiba Satellite U505-S2960 notebook computer.
1. Introduction
This page describes how to install 64-bit Ubuntu v9.10 on a Toshiba U505-S2960 notebook computer. Although the initial install is fairly painless, some of the hardware in this machine is fairly new and is not supported by the drivers that come with 9.10. The wireless card is (as of this writing) not supported at all in the 64-bit environment and you may want to install the 32-bit version rather than the 64-bit version for this reason. Ubuntu 10 is scheduled for release in April 2010 and, hopefully, will fix some of these issues.
The U505 that I purchased in December of 2009 features:
- Intel Core 2 Duo T6600 2.2GHz Processor
- 2MB L2 Cache, 800MHz FSB
- 4GB DDR2 800MHz RAM Max: 8GB
- 320GB (5400 RPM) SATA Hard Drive
- 13.3" diagonal WXGA (1280 x 800) TruBrite TFT LCD Display
- Webcam and Microphone
- Intel Graphics Media Accelerator 4500MHD Video with 128MB-1760MB shared graphics memory
- Labelflash SuperMulti DVD±R/RW Double Layer Drive
- Realtek 802.11b/g/n Wireless LAN
- 10/100 Ethernet LAN
- Modem RJ-11
- ExpressCard 54/34 Slot
- 85 key US keyboard, Touchpad Enable/Disable button, Media Control Buttons
- Memory Card Reader: SD, SDHC, MS, MS Pro, MMC, xD
- Ports: 2 x USB 2.0, eSATA/USB, Headphone/S/PDIF output, Microphone input, VGA, HDMI-CEC, RJ-11 (Modem), RJ-45
- Approximate Unit Dimensions: 12.5" (W) x 9.08" (D) x 1.16"~1.5" (H)
- Approximate Unit Weight: 4.74 Pounds
- Purchased from J & R for $789 + $69.98 NYS tax = $858.98
2. Install From CD
The install from CD is fairly straightforward, except for partitioning. The following are my choices and you may need to make other choices depending on your situation.
This installation assumes that you will be building a system that can dual-boot into either Windoze or Linux. For systems that can run both simultaneously, you will need to explore virtualization software like VMWare.
Defrag: Prior to installing Linux, you should boot into Windoze at least once and defragment the drive. I'm not sure if this is still necessary to maximize available disk space, but it can't hurt.
Download and Burn: the current Ubuntu release CD image ISO from Ubuntu.com and burn it to a CD.
Boot from Install CD: Insert the boot CD into the CD-ROM drive and reboot. When the American Megatreds BIOS splash screen comes up press F-12 and choose CD/DVD P-1MATSHITADVD-RAM UJ862.
Initial Prompt: Choose the language of your choice and select install.
Welcome: choose language and click forward.
Where are you?: select time zone.
Keyboard layout: Default is USA.
Prepare disk space: This step defines how you will partition your hard disk. The easiest choice is, "Install them side-by-side, choosing between them each startup." However, if you know what you're doing, choosing "Specify partitions manually," will allow you to set up separate root and home partitions, making future OS upgrades a bit easier. My steps:
- Change /dev/sda2 to 100GB, type NTFS, mount point /windows. This will handle the resizing of the NTFS partition and will take a few minutes.
- Add /dev/sdb5 1024MB, type ext2, mount point /boot
- Add /dev/sdb6 4096MB, type swap
- Add /dev/sda7 30000MB, type ext4, mount point /
- Add /dev/sda8 171909MB, type ext4, mount point /home
This left me with the following partition table, which includes three residual (and mysterious) NTFS partitions.
/dev/sda1 ntfs 1572MB /dev/sda2 ntfs /windows 100000MB /dev/sda5 ext2 /boot 1019MB /dev/sda6 swap 4096MB /dev/sda7 ext4 / 29997MB /dev/sda8 ext4 /home 171908MB /dev/sda3 ntfs 11472MB
Who are you?: These steps configure the name, password, and name of computer. Since you don't know how this info will be hacked, tou may not want to use real name. I named my computer localhost and require password for login.
Migrate documents and settings: Why?
Install: Kick it off and it takes around 20 minutes.
Reboot: Restart Ubuntu and you should be able to boot from the hard drive.
Update Your Package Repository: Once you get the machine on the internet, you should update your application package repository with a list of the latest security patches and repository updates. This may take a few minutes.
sudo apt-get update
This particular combination of hardware and software release is a bit touchy, and some fairly important tweaks follow.
3. Fan Issues
The first thing you may notice about the machine is that the wrist rest gets really hot and the fan doesn't seem to be running. Apparently, there are issues with this particular BIOS and version of ACPI, which doesn't turn the fan on. There supposedly is a thermocouple that will force the fan on at a critical temperature, but you will not want to test that feature very often.
None of the fixes given in various forum threads ( 1, 2, 3, 4, 5, 6) seemed to work for me and it looks like this is something that will just have to wait for another release. The sensors-detect program finds the "EDID EEPROM" with a Intel Core family thermal sensor, but installing the suggested coretemp driver didn't do anything for me.
The nasty workaround is to simply suspend and reawaken the machine once it starts getting warm:
sudo pm-suspend
The BIOS apparently feels the heat on reawakening and turns the fan on. It stays on, but that allows you to continue to stay cool. You can check the temperature with the "sensors" command, with the -f option giving readouts in Farenheit for Americans who haven't caught up with the rest of the planet.
sensors -f acpitz-virtual-0 Adapter: Virtual device temp1: +109.4°F (crit = +226.4°F) coretemp-isa-0000 Adapter: ISA adapter Core 0: +84.2°F (high = +185.0°F, crit = +185.0°F) coretemp-isa-0001 Adapter: ISA adapter Core 1: +84.2°F (high = +185.0°F, crit = +185.0°F)
4. Screen Brightness
Out of the box the screen brightness can be a bit overwhelming, especially in contrast to older, dimmer LCD displays. The backlight intensity can be changed with with xrandr and the contrast (gamma) adjustment can be tweaked with xgamma. I put the following in my .xinitrc file in my home directory to set the values when X starts.
xgamma -gamma .7 xrandr --output LVDS1 --set BACKLIGHT 5
You can use xrandr --verbose to view other configurable display options and the range of available values.
5. Sound
The version of the Advanced Linux Sound Architecture (ALSA v1.0.20) included in Ubuntu 9.10 does not support the Realtek ALC269 audio chip in this machine. Despite the numerous config file tweaks mentioned on the web, the only solution as of this writing seems to be to recompile and install from current source on the ALSA website.
Download: You will need the driver, lib, plugins and utils source packages from the ALSA website.
Dependencies: You will also need the following packages installed in order to compile. The xmlto package (for compiling man pages) is especailly large and may take awhile on lower speed connections.
sudo apt-get install linux-headers-`uname -r` sudo apt-get install patch sudo apt-get install ncurses-dev sudo apt-get install xmlto sudo apt-get install gettext
Remove existing ALSA packages:
sudo apt-get remove pulse-audio sudo apt-get remove alsa-utils sudo apt-get remove alsa-base
Decompress and Compile:
bunzip2 alsa*.bz2 tar -xvf alsa-driver* tar -xvf alsa-lib* tar -xvf alsa-plugins* tar -xvf alsa-util* cd alsa-lib* sudo make install cd ../alsa-driver* sudo make install cd ../alsa-plugins* sudo make install cd ../alsa-util* sudo make install
Add yourself to the audio group: Audio devices are created with ownership by the root but with the "audio" group. Adding the username you operate under to the audio group will allow your audio applications to access the ALSA devices.
adduser <username> audio
Load the ALSA modules:
sudo modprobe snd_pcm_oss sudo modprobe snd_pcm_mixer sudo modprobe snd_hda_codec sudo modprobe snd_hda_intel
Open Sound: The older Open Sound System (OSS) supports the Intel High Definition Audio (P35) system, although it does not provide support for /dev/mixer, limiting your flexibility with volume adjustments. However, it is a viable alternative to the Rube Goldber contraption that is ALSA. Instructions for installation are available on the Ubuntu website.
6. Wireless
Neither the Linux driver from Realtek or the XP driver under NDISWrapper work under this 64-bit Ubuntuu version as of this writing. If you need the wireless chip to work, you will want to install the 32-bit version of Ubuntu and install NDISWrapper to use the XP driver provided by the manufacturer.
The following is provided as information for others who are curious about cryptic error messages such as the ones I uncovered trying to find a working driver.
Use lspci to get information about the PCI devices, including the wireless networking chip:
lspci -v 03:00.0 Network controller: Realtek Semiconductor Co., Ltd. Device 8172 (rev 10) Subsystem: Realtek Semiconductor Co., Ltd. Device 8152 Flags: bus master, fast devsel, latency 0, IRQ 5 I/O ports at c800 [size=256] Memory at fdffc000 (32-bit, non-prefetchable) [size=16K] Capabilities: [40] Power Management version 3 Capabilities: [50] Message Signalled Interrupts: Mask- 64bit+ Queue=0/0 Enable- Capabilities: [70] Express Legacy Endpoint, MSI 00 Capabilities: [100] Advanced Error Reporting <?> Capabilities: [140] Virtual Channel <?> Capabilities: [160] Device Serial Number 00-e0-4c-ff-fe-22-55-88
Realtek provides a Linux driver on their website that will comopile and install, although it locked up my system when I tried to use it. The source is available in the download section of their website. ( Communications Network ICs -> Wireless LAN ICs -> IEEE 802.11 b/g/n Single Chip -> Software).
Even though this chip is the RTL 8172, the driver for the RTL 8192se should be the one.
The kernel headers are needed for compilation.
sudo apt-get install build-essential tar -zxvf RTL* cd RTL* make
If you try to do a "make install", the Makefile will try to recompile your kernel, which is something you may not want to do. If you do want to recompile your kernel, you will need to install the linux source, otherwise you will get this message:
make install will fail with make[3]: *** No rule to make target `kernel/bounds.c', needed by `kernel/bounds.s'. Stop.
If you install the source package, the source code is left as a tarball that must be decompressed:
sudo apt-get install linux-source cd /usr/src sudo tar -jxvf linux-source*.bz2
After compilation, install the firmware file and kernel module:
sudo cp -va firmware/RTL8192SE /lib/firmware cd HAL/rtl8192 install -p -m 644 r8192se_pci.ko /lib/modules/`uname -r`/kernel/drivers/net/wireless/ sudo modprobe r8192se_pci
Create a /etc/modprobe.d/rtl8192se.conf file and add an alias to load the module on demand:
alias wlan0 r8192se_pci
If you have a specific access point that you regularly connect to, you can add lines to the /etc/network/interfaces file so ifup wlan0 connects
iface wlan0 inet dhcp wireless-essid <add-essid-here>
Another common technique for wireless cards is the use of NDISWrapper with the native XP drivers. However, NDISWrapper doesn't work with 64-bit Linux, or Vista/Win7 drivers, making it impossible to use with 64-bit Ubuntu. The following should work for you if you have 32-bit Ubuntu.
There is an NDISWrapper package for Ubuntu:
sudo apt-get instll ndiswrapper-common sudo apt-get instll ndiswrapper-utils-1.9
Download the XP drivers from the Realtek download section of the Realtek website. These must be the XP drivers, not the Vista/Win7 drivers. Make a directory for them, unpack the tarball and install them in NDISWrapper.
sudo mkdir /usr/local/share/ndiswrapper sudo mv 8191_8192_SE_WindowsDriver* /usr/local/share/ndiswrapper cd /usr/local/share/ndiswrapper sudo unzip *.zip sudo ndiswrapper -i net8192se.inf"
If you use 32-bit drivers with 64-bit linux, dmesg will show NDISWrapper issueing the following error messge:
[16314.599263] ndiswrapper version 1.55 loaded (smp=yes, preempt=no) [16314.609770] ndiswrapper (check_nt_hdr:150): kernel is 64-bit, but Windows driver is not 64-bit;bad magic: 010B [16314.609776] ndiswrapper (load_sys_files:206): couldn't prepare driver 'net8192se' [16314.610249] ndiswrapper (load_wrap_driver:108): couldn't load driver net8192se; check system log for messages from 'loadndisdriver' [16314.610374] usbcore: registered new interface driver ndiswrapper
If you use the 64-bit drivers from your /windows partion, you will get error messages in dmesg for unsupported function calls:
[16391.327238] ndiswrapper version 1.55 loaded (smp=yes, preempt=no) [16391.350993] ndiswrapper (import:242): unknown symbol: ntoskrnl.exe:'IoWMIQueryAllData' [16391.351000] ndiswrapper (import:242): unknown symbol: ntoskrnl.exe:'IoWMIOpenBlock' [16391.351089] ndiswrapper (load_sys_files:206): couldn't prepare driver 'net8192se' [16391.351899] ndiswrapper (load_wrap_driver:108): couldn't load driver net8192se; check system log for messages from 'loadndisdriver' [16391.352015] usbcore: registered new interface driver ndiswrapper
Even though the driver doesn't work, NDISWrapper will list it as installed:
sudo ndiswrapper -l net8192se : driver installed device (10EC:8172) present
The driver module is loaded with these commands:
sudo ndiswrapper -m sudo modprobe ndiswrapper sudo /etc/init.d/networking restart iwconfig
Attempting to load a Vista/Win7 driver will cause messages like these in dmesg:
[ 8355.181337] ndiswrapper version 1.55 loaded (smp=yes, preempt=no) [ 8355.198822] ndiswrapper (import:242): unknown symbol: ntoskrnl.exe:'PoUnregisterPowerSettingCallback' [ 8355.198835] ndiswrapper (import:242): unknown symbol: ntoskrnl.exe:'PoRegisterPowerSettingCallback' [ 8355.198852] ndiswrapper (import:242): unknown symbol: ntoskrnl.exe:'IoWMIOpenBlock' [ 8355.198860] ndiswrapper (import:242): unknown symbol: ntoskrnl.exe:'IoWMIQueryAllData' [ 8355.198875] ndiswrapper (import:242): unknown symbol: NDIS.SYS:'NdisMIndicateReceiveNetBufferLists' [ 8355.198885] ndiswrapper (import:242): unknown symbol: NDIS.SYS:'NdisAllocateNetBufferAndNetBufferList' [ 8355.198895] ndiswrapper (import:242): unknown symbol: NDIS.SYS:'NdisAllocateMdl' [ 8355.198904] ndiswrapper (import:242): unknown symbol: NDIS.SYS:'NdisMDeregisterScatterGatherDma' [ 8355.198913] ndiswrapper (import:242): unknown symbol: NDIS.SYS:'NdisMFreeNetBufferSGList' [ 8355.198926] ndiswrapper (import:242): unknown symbol: NDIS.SYS:'NdisFreeNetBufferList' [ 8355.198935] ndiswrapper (import:242): unknown symbol: NDIS.SYS:'NdisFreeMdl' [ 8355.198945] ndiswrapper (import:242): unknown symbol: NDIS.SYS:'NdisMSendNetBufferListsComplete' [ 8355.198958] ndiswrapper (import:242): unknown symbol: NDIS.SYS:'NdisAllocateMemoryWithTagPriority' [ 8355.198998] ndiswrapper (import:242): unknown symbol: NDIS.SYS:'NdisMSetMiniportAttributes' [ 8355.199007] ndiswrapper (import:242): unknown symbol: NDIS.SYS:'NdisOpenConfigurationEx' [ 8355.199029] ndiswrapper (import:242): unknown symbol: NDIS.SYS:'NdisMIndicateStatusEx' [ 8355.199038] ndiswrapper (import:242): unknown symbol: NDIS.SYS:'NdisMOidRequestComplete' [ 8355.199062] ndiswrapper (import:242): unknown symbol: NDIS.SYS:'NdisAllocateIoWorkItem' [ 8355.199080] ndiswrapper (import:242): unknown symbol: NDIS.SYS:'NdisQueueIoWorkItem' [ 8355.199090] ndiswrapper (import:242): unknown symbol: NDIS.SYS:'NdisMAllocateNetBufferSGList' [ 8355.199105] ndiswrapper (import:242): unknown symbol: NDIS.SYS:'NdisMAllocatePort' [ 8355.199114] ndiswrapper (import:242): unknown symbol: NDIS.SYS:'NdisMNetPnPEvent' [ 8355.199123] ndiswrapper (import:242): unknown symbol: NDIS.SYS:'NdisMFreePort' [ 8355.199139] ndiswrapper (import:242): unknown symbol: NDIS.SYS:'NdisMSetBusData' [ 8355.199148] ndiswrapper (import:242): unknown symbol: NDIS.SYS:'NdisMRegisterMiniportDriver' [ 8355.199158] ndiswrapper (import:242): unknown symbol: NDIS.SYS:'NdisMDeregisterInterruptEx' [ 8355.199171] ndiswrapper (import:242): unknown symbol: NDIS.SYS:'NdisMGetBusData' [ 8355.199188] ndiswrapper (import:242): unknown symbol: NDIS.SYS:'NdisMRegisterScatterGatherDma' [ 8355.199197] ndiswrapper (import:242): unknown symbol: NDIS.SYS:'NdisMSynchronizeWithInterruptEx' [ 8355.199207] ndiswrapper (import:242): unknown symbol: NDIS.SYS:'NdisMRegisterInterruptEx' [ 8355.199216] ndiswrapper (import:242): unknown symbol: NDIS.SYS:'NdisAllocateNetBufferListPool' [ 8355.199225] ndiswrapper (import:242): unknown symbol: NDIS.SYS:'NdisFreeNetBufferListPool' [ 8355.199235] ndiswrapper (import:242): unknown symbol: NDIS.SYS:'NdisMDeregisterMiniportDriver' [ 8355.199239] ndiswrapper (load_sys_files:206): couldn't prepare driver 'net8192se' [ 8355.199945] ndiswrapper (load_wrap_driver:108): couldn't load driver net8192se; check system log for messages from 'loadndisdriver' [ 8355.200098] usbcore: registered new interface driver ndiswrapper
7. Removing the Splash Screen
I prefer to see what's going on with my machine rather than have the boot messages hidden behind the splash bitmap just in case there's a boot problem (which used to happen alot). Unlike RedHat, which provides a runlevel 3 text login, Debian distribution runlevels always start the GUI. So the process is a bit more complicated than changing /etc/inittab (which doesn't exist in Debian).
Ubuntu used GRUB 2. The old /boot/grub/menu.lst is replaced by a generated file with options specified in /etc/default/grub configuration file. The splash screen can be removed and text mode (non-graphical) booting can be enabled by editing that file and changing these lines:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" GRUB_HIDDEN_TIMEOUT=true
To...
GRUB_CMDLINE_LINUX_DEFAULT="text" GRUB_HIDDEN_TIMEOUT=0
Then run
sudo update-grub
After these changes, on boot you will see the system startup messages and then be greeted with a console login prompt. After logging in, you can use the startx command to start the graphical desktop.
startx
8. Removing the Desktop
If you're hard core command line and don't want the clutter and delay of the Ubuntu desktop, you might consider getting rid of the desktop altogether and just using a window manager to manage xterms and X applications started from the xterms. This will speed your boot time a bit and get rid of some annoying background daemons. I've used the venerable Motif Window Manager (MWM) for a number of years. It comes in the motif-clients package. Do not use the alternative lesstif package, which lacks some features.
sudo apt-get install motif-clients
.xinitrc is a file that is executed when X is started. Create a .xinitrc in your home directory (/home/<username>) and type the following lines. This creates a single terminal window, puts a clock window at the bottom of the screen, sets the "desktop" color to blue and starts the window manager. When you type "startx", from the text login, it will start an xterm, in which you type commands to start other programs. You can create additional terminal windows from a popup menu when you right-click on the desktop.
xterm -geometry 128x24+10+10& xterm -geometry 128x24+10+375& xclock -d -update 1 -geometry 254x32+819+710& xsetroot -solid navy exec mwm
9. TrueType Fonts
The X window server supports TrueType (tm) fonts, although installing them via the command line is a bit more cumbersome than with an installer program or package. If you've got some on a Windoze box, TrueType fonts tend to look quite a bit better than the fonts that come with the distributions. And if you're doing any web development, you need them to have at least a guess as to what your pages look like on a Windoze box.
Unfortunately, the FontPath configuration that specifies the directories where fonts are located is compiled into the X binary and is not configurable. While "xset +fp" can add a directory to the font path, that setting is not permanent and is lost when you reboot. xset cannot be added to a local configuration file like .xinitrc. This is not a problem for newer applications that use fontconfig, but this may represent an issue for older applications that only use the X font paths. The kludge is to copy the fonts you want to add into one of the configured truetype font directories.
Copy the fonts into a shared font directory: You can do an "xset -q" to find the configured Font Paths for your X configuration:
xset -q
Chose one of the directories listed in "Font Path" and copy your .ttf font files into that directory. In my case, I chose to use /usr/share/fonts/X11/misc. While you could create a new directory under /usr/share/fonts, fonts installed there would not be visible to xlsfonts or older X applications.
sudo cp your-fonts/*.ttf /usr/share/fonts/X11/misc
Then run mkfontscale to create the fonts.scale file and mkfontdir to create the fonts.dir files used by the X server. You should also change the owner of all the files to root to avoid permission problems. The mkfontscale and mkfontdir steps are critical if you want to be able to list your fonts with xlsfonts or other legacy X applications.
cd /usr/share/fonts/X11/misc sudo mkfontscale sudo mkfontdir sudo chown root:root *
You can check to verify the fonts are loading by starting an X application (like gimp). The xlsfonts command lists fonts available directly from X and the fc-list command lists fonts available through fontconfig.
xlsfonts | less fc-list | less
The listing will likely be long, but if the fonts are loading correctly, you will see X font names like these (for Arial and Garamond, respectively):
-monotype-arial-medium-i-normal--0-0-0-0-p-0-iso8859-1 -monotype-arial-medium-i-normal--0-0-0-0-p-0-iso8859-10 -monotype-arial-medium-i-normal--0-0-0-0-p-0-iso8859-15 -monotype-arial-medium-i-normal--0-0-0-0-p-0-iso8859-2 -monotype-garamond-medium-i-normal--0-0-0-0-p-0-iso8859-1 -monotype-garamond-medium-i-normal--0-0-0-0-p-0-iso8859-10 -monotype-garamond-medium-i-normal--0-0-0-0-p-0-iso8859-15 -monotype-garamond-medium-i-normal--0-0-0-0-p-0-iso8859-2
Empires never think the end is near, until the end is here. (Michael Moore)