I tried posting the following in the answers section, but was met with a validation error. So I'm posting it here in the hopes that it helps someone save some time installing Slackware on what is undoubtedly the greatest laptop ever.
Slackware 12.0 on a Lenovo Thinkpad T61
Intended Audience:
This document is intended for users already familiar with the Slackware way of life. It assumes a general knowledge of things like compiling from source, recompiling the kernel, loading modules, and firmware. So while some steps may make note of how to do these tasks, it is assumed the reader knows enough to accomplish these tasks on steps that are not explicitly detailed in such a way.
Wireless
Ok, to get wireless working, we first have to figure out what model we have. To do this, we'll run the lspci command.
My card was detected as:
Quote:
03:00.0 Network controller: Intel Corporation PRO/Wireless 4965 AG or AGN Network Connection (rev 61)
|
So to get it running, I need the following packages:
Quote:
iwlwifi-1.2.25
iwlwifi-4965-ucode-288.57.2.21
mac80211-10.0.4
|
Note: I had to use the version 1 firmware, which is in the package iwlwifi-4965-ucode-4.44.15.tgz
The firmware unpacked as iwlwifi-4965.ucode and presented me with an error in dmesg until I renamed it iwlwifi-4965-1.ucode
you can get the package here:
http://intellinuxwireless.org/?n=dow...&f=ucodes_4965
Below is a link to the packages with good installation instructions:
http://intellinuxwireless.org/?p=iwl...=HOWTO-iwlwifi
If you them correctly and loaded the appropriate modules, you should see the following modules loaded when you run lsmod
Quote:
iwl4965 211956 0
cfg80211 9352 1 mac80211
mac80211 155656 1 iwl4965
|
From here, you should be able to use the iwconfig to set your network parameters and then ifconfig or dhcpcd to request an IP address on wlan0
Video
The video is pretty straight-forward, the hard part was finding the driver for the Nvidia card in my laptop. lspci is not very helpful beyond identifying it as an Nvidia card:
Quote:
01:00.0 VGA compatible controller: nVidia Corporation Unknown device 0429 (rev a1)
|
After googling, the actual card is:
The following page has some helpful information:
http://www.thinkwiki.org/wiki/NVidia_Quadro_NVS_140m
The link to the drivers is at:
http://www.nvidia.com/object/linux_display_archive.html
Initially, I used the 100.14.09 driver, which worked for 3d accelaration. A bug presented itself though, and I was unable to kill X or use a virtual terminal without the screen going black.
To solve this problem, I upgraded to the 100.14.19 driver, which solved the issue. I should note that the native resolution for this laptop is 1280x800
There is a good thread on solving the virtual terminal issue, should the upgraded driver not work for you. I have not tested these methods, as the driver solved my problem, but it might be worth a try if you have the same issue and it is not solved by the driver:
http://www.nvnews.net/vbulletin/showthread.php?t=120492
Sound
The included alsa packages didn't seem to load the soundcard correctly. I experienced a similar issue on a recent install of an IBM Thinkcentre, and the symptoms I experienced were that the sound would work correctly after loading the snd_hda_intel module, but any change to the volume would disable all sound, forcing a reload of the module and running alsaconf to configure the card, and then an alsactl restore to set the sound settings to the previously loaded settings.
I initially tried removing the packages through pkgtool, then loading updated packages from
http://linuxpackages.net
The same problems occurred. So I finally bit the bullet and downloaded the following packages from:
http://www.alsa-project.org/main/index.php/Main_Page
Quote:
alsa-driver-1.0.17
alsa-firmware-1.0.17
alsa-lib-1.0.17a
alsa-oss-1.0.17
alsa-utils-1.0.17
|
From there, I untarred (that's a word, right?) the packages, configured, compiled, and installed them from source. A better option would be to create a slackware package from the compiled source and install the packages...but I was concerned with immediate usability over long-term upgradeability.
After the packages were installed, I ran rmmod on snd_hda_intel, and tried to reload the module with modprobe, but was greeted with an error. At this point, I ran alsaconf, which configured the soundcard, then ran modprobe snd_hda_intel again without the error. I then ran alsactl restore to set the sound values to their previous settings, and was able to adjust the sound in both applications and alsamixer without issue.
Bluetooth
Bluetooth was fun to get working. It pretty much worked out of the box, I just had to learn the functionality of connecting to a bluetooth device. I use my bluetooth to connect to my phone's wireless internet, so for this document, that is the scope of our bluetooth configuration.
First, I made sure the bluetooth module was loaded with lsmod:
Quote:
bluetooth 53092 6 l2cap,hci_usb
|
When I ran hcitool dev it didn't detect any devices. I discovered this was a result of the bluetooth daemon not running. To start the bluetooth software, I made the rc.bluetooth file in /etc/rc.d/ executable with:
Quote:
chmod 755 /etc/rc.d/rc.bluetooth
|
I then ran:
Quote:
/etc/rc.d/rc.bluetooth restart
|
but start would have worked as well.
Running hditool dev again found my bluetooth device as:
To find my phone, I then ran sdptool browse. It found my phone as:
Quote:
bash-3.1# sdptool browse
Inquiring ...
Browsing 00:1E:75:1F:06:FA ...
Service Name: Dial-up Network Gateway
Service RecHandle: 0x10000
Service Class ID List:
"Dialup Networking" (0x1103)
"Generic Networking" (0x1201)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 1
Profile Descriptor List:
"Dialup Networking" (0x1103)
Version: 0x0100
Service Name: Headset Audiogateway
Service RecHandle: 0x10001
Service Class ID List:
"Headset Audio Gateway" (0x1112)
"Generic Audio" (0x1203)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 2
Profile Descriptor List:
"Headset" (0x1108)
Version: 0x0100
Service Name: Handsfree Audio Gateway
Service RecHandle: 0x10002
Service Class ID List:
"Handfree Audio Gateway" (0x111f)
"Generic Audio" (0x1203)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 3
Profile Descriptor List:
"Handsfree" (0x111e)
Version: 0x0105
Service Name: Advanced Audio Distribution Profile
Service RecHandle: 0x10003
Service Class ID List:
"Audio Source" (0x110a)
Protocol Descriptor List:
"L2CAP" (0x0100)
PSM: 25
"AVDTP" (0x0019)
uint16: 0x100
Profile Descriptor List:
"Advanced Audio" (0x110d)
Version: 0x0100
Service Name: AT
Service RecHandle: 0x10004
Service Class ID List:
"Serial Port" (0x1101)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 4
Service Name: Audio Video Remote Control Profile
Service RecHandle: 0x10006
Service Class ID List:
"AV Remote Target" (0x110c)
Protocol Descriptor List:
"L2CAP" (0x0100)
PSM: 23
"AVCTP" (0x0017)
uint16: 0x100
Profile Descriptor List:
"AV Remote" (0x110e)
Version: 0x0100
|
What we're looking for here is the dial-up network gateway. You'll want to note the mac address of your phone, and the channel the network gateway is running on.
At this point, it's a good idea to go ahead and set your computer's default passkey. I did this in two places. First, I changed the passkey value in
/etc/bluetooth/hcid.conf to reflect the passkey I wanted, and then ran
echo "1234" > /etc/bluetooth/passkeys/default to set the passkey as my default. You can set unique passkeys in the passkeys folder to each mac address, but that's a topic for another day.
From here, I ran:
Quote:
rfcomm connect /dev/rfcomm0 <mac address> <channel>
|
where <mac address> is my mac address and channel is the channel and there are no <> marks.
If you haven't screwed up, this should establish a connection with your phone.
Now...what do we do with this connection? We need to use a PPP program to establish a connection to the internet. I chose kppp because I was so tired of config files at this point that I wanted a nice pretty gui.
I used the following instructions at:
http://litljay.com/howtos/tether/kppp.html
But it is worth noting that there are additional methods with other programs listed at:
http://litljay.com/howtos/tether/
The instructions above are for connecting to an ATT/Cingular network, so some settings may have to be changed for alternate networks.
ACPI
Because it's a laptop, we will want the acpi and ibm_acpi modules to take advantage of all of the nifty features. I initially compiled my kernel to include the ibm_acpi in the kernel rather than as a module, but I later recompiled as a module in an attempt to get fan support working. It didn't work, but I left it as a module rather than recompile again. Make sure APM is not compiled as either a module or directly in the kernel. ACPI is superior from what I've read, and the two packages will conflict with each other. To load these modules, run:
Quote:
modprobe acpi
modprobe ibm_acpi
|
There are plenty of acpi tools and dockapps that will monitor your system, but a good command line program that displays some very detailed output is acpitool available through
http://linuxpackages.net An example of the output is as follows:
Quote:
bash-3.1# acpitool -e
Kernel version : 2.6.21.5-smp - ACPI version : 20070126
-----------------------------------------------------------
Battery #1 : present
Remaining capacity : 44540 mWh, 56.34%, 02:11:20
Design capacity : 84240 mWh
Last full capacity : 79060 mWh, 93.85% of design capacity
Capacity loss : 6.149%
Present rate : 20346 mW
Charging state : discharging
Battery type : rechargeable, LION
Model number : 42T4530
Serial number : 260
AC adapter : off-line
Failed to open file: /proc/acpi/ibm/fan
CPU type : Intel(R) Core(TM)2 Duo CPU T8300 @ 2.40GHz
Min/Max frequency : 800/2401 MHz
Current frequency : 800 MHz
Frequency governor : userspace
Freq. scaling driver : acpi-cpufreq
Cache size : 3072 KB
Bogomips : 4795.45
Bogomips : 4788.04
# of CPU's found : 2
Processor ID : 0
Bus mastering control : yes
Power management : yes
Throttling control : yes
Limit interface : yes
Active C-state : C3
C-states (incl. C0) : 4
Usage of state C1 : 23830 (0.9 %)
Usage of state C2 : 291401 (11.4 %)
Usage of state C3 : 2230650 (87.6 %)
T-state count : 8
Active T-state : T0
Processor ID : 1
Bus mastering control : yes
Power management : yes
Throttling control : yes
Limit interface : yes
Active C-state : C3
C-states (incl. C0) : 4
Usage of state C1 : 32960 (0.7 %)
Usage of state C2 : 291314 (6.1 %)
Usage of state C3 : 2221103 (46.5 %)
T-state count : 8
Active T-state : T0
Thermal zone 1 : ok, 43 C
Trip points :
-------------
critical (S5): 127 C
Thermal zone 2 : ok, 31 C
Trip points :
-------------
critical (S5): 100 C
passive: 96 C: tc1=5 tc2=4 tsp=600 devices=0xc28f2338 0xc28f2324
wakeup devices : <not available>
bash-3.1#
|
Modules
If everything went as planned, you will need to load a few modules on startup to avoid unnecessary headaches of having to load them each time you reboot. To do this, we'll use the /etc/rc.d/rc.modules file and add the following lines:
Quote:
/sbin/modprobe mac80211
/sbin/modprobe iwl4965
/sbin/modprobe acpi
/sbin/modprobe ibm_acpi
|