Showing posts with label linux. Show all posts
Showing posts with label linux. Show all posts

Thursday, December 20, 2007

IBM T40 Internal Modem

The driver for the part of internal modem is loadable from snd_intel8x0m module. To create a modem device, download slmodemd which creates a node at /dev/ttySL0 for the modem which later can be used for the connection via PPP. Enable alsa mode (README) when installing slmodemd.
To run:
modprobe snd_intel8x0m
slmodemd --alsa hw:1

Sunday, November 18, 2007

Remote Desktop via Xming

Xming is a port of the X Window System to the Microsoft Windows operating system. Basically, it runs an X Server on your Windows machine, and client application can be run on the remote Linux machine (LM) and displayed on your Windows machine (WM).

To use it, you'll have to install Xming and putty on WM. Now run Xming X Server on localhost:0.0. Then, use Putty to connect to LM, and don't forget to enable X11 forwarding as shown below.


Most probably, X11 forwarding is not enabled on your LM ssh daemon. So change /etc/ssh/sshd_config to include:


X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes
And, restart sshd
/etc/rc.d/rc.sshd restart
Now, you'll need to re-ssh to LM using Putty. Check the event log ensure that "X11 forwarding enabled" is there and on the terminal type echo $DISPLAY whether it's been set by Putty.

Well, that be it. I ran konqueror, and the result is as shown below.

Saturday, November 17, 2007

Remote Desktop to your home Linux PC via tightVNC

TightVNC is a free remote control software package derived from the popular VNC software. Download and install in the Linux PC here. It works in a client server manner where the server is the Linux home PC and the client is the PC from where you want to connect to the server to get the desktop of it. It's insecure as it doesn't contain any encryption apart from the initial user acknowledgment password. Hence, to make it secure we have to use use SSH tunneling. More info here and here. If the home server is firewalled or connected to the outside world via a router, don't forget to enable port forwarding.

In the snapshot above, all connection to port 22 on the router is forwarded to the IP address of the server.
To connect from the client PC, we have to connect to the external IP address of the router. Check your router IP here. The next step is to download putty and vncviewer client from here and here. These are the executables that you want to run from the client PC, and no installation is needed at all. Run Putty with tunneling, and forward client port e.g. 5901 to server port. Next, run the vncviewer client. Sample run would be like below:

Note: ssh tunneling makes the implementation rather slow, as it requires encryption and decryption, thereby bandwidth conservation is required. For example in the server I would run with the command : vncserver -geometry 800x600 depth 16 :01
and ~/.vnc/xstartup would look like below (it's the default actually, note the twm window manager is chosen):
xrdb $HOME/.Xresources
xsetroot -solid grey
xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
twm &

Friday, October 19, 2007

Updating slackware, tips and tricks

http://slackware.wordpress.com/2006/09/26/slackware-changelog-september-26th/
Tips and tricks (actually, more of like some useful information):
  • Since I'm using tcsh as the default shell, just a reminder, instead of modifying /etc/profile, I should modify /etc/csh.login. Then from the shell, run "tcsh -l".
  • Azureus is a Java based Bittorrent client. Have been using it for a while as I was unable to install the Bittorrent client. Too much dependencies, I just couldn't resolve the wxPython one (not geeky enough, I guess :P). That's probably one of the problems faced by the user when they try to install Python based program.
  • XFCE is a lightweight desktop environment. Some screenshots. I find it pretty neat and, indeed, light.
  • And this is really funny.

Sunday, October 14, 2007

Connecting to wireless network in NUS from your thinkpad

I have mentioned about wireless for T40 in linux here. Unfortunately, it doesn't inherently support WPA protocol. So, we have to install wpa_supplicant which support WPA and WPA2 (IEEE802.11i). The installation is available here and here. Basically, after building the source, which creates wpa_supplicant and wpa_cli with 'make' command, the binaries can be installed to /usr/local/bin.
Example commands:
make
cp wpa_cli wpa_supplicant /usr/local/bin
Then, we need to make a configuration file, /etc/wpa_supplicant.conf. The entry of the file as provided by http://opensource.nus.edu.sg/wiki/index.php/Connecting_to_PEAP_in_NUS and here:
ctrl_interface=/var/run/wpa_supplicant
network={
ssid="NUS"
scan_ssid=1
key_mgmt=IEEE8021X
eap=PEAP
ca_cert=”/etc/cert/ase1.pem”
phase2=”auth=MSCHAPV2”
}
The content of ase1.pem is as such :
-----BEGIN CERTIFICATE-----
MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkEx
FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD
VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv
biBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhhd3RlIFByZW1pdW0gU2Vy
dmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZlckB0aGF3dGUuY29t
MB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYTAlpB
MRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsG
A1UEChMUVGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRp
b24gU2VydmljZXMgRGl2aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNl
cnZlciBDQTEoMCYGCSqGSIb3DQEJARYZcHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNv
bTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2aovXwlue2oFBYo847kkE
VdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIhUdib0GfQ
ug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMR
uHM/qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG
9w0BAQQFAAOBgQAmSCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUI
hfzJATj/Tb7yFkJD57taRvvBxhEf8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JM
pAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7tUCemDaYj+bvLpgcUQg==
-----END CERTIFICATE-----
Then, run the wpa_supplicant using :
wpa_supplicant -i eth1 -c /etc/wpa_supplicant.conf -B
Might want to try using -Dwext or -Dipw (deprecated)
Start wpa_gui:
wpa_gui &
Obtain ip address using:
dhclient eth1
To connect to NUSOPEN (NUS open network), set the essid to NUSOPEN:
iwconfig eth1 essid "NUSOPEN"
then obtain the ip address using dhclient as before (or dhcpcd eth1).

More info are available here:
http://www.thinkwiki.org/wiki/Wpa_supplicant
http://ipw2100.sourceforge.net/
http://en.wikipedia.org/wiki/Wpa_supplicant
http://opensource.nus.edu.sg/wiki/index.php/Main_Page
http://linuxnus.org/

Thursday, October 11, 2007

Suspending your IBM Thinkpad T40

For this I had to upgrade the kernel to the latest, 2.6.23, since my previous kernel doesn't inherently support suspend feature unless I patch it with tuxonice. To check whether your kernel version support suspend:
cd /usr/src/linux
make xconfig
Under "Power management options (ACPI, APM)" tab, check whether "suspend to RAM and standby" exists. If it doesn't, I suppose suspend is not supported by your kernel.
After downloading the kernel and compiling it, by right, suspend should work.
echo -n "mem" > /sys/power/state
Press Fn button on your thinkpad to resume.
During the compilation process, typically we would want to do make oldconfig, and we should enable all the suspend related features whenever asked. Also we might want to enable ibm_acpi
I also needed to install initrd in order to mount root partition using ext3 modules:
cd /boot
mkinitrd -c -k 2.6.23-smp -m ext3 -f ext3 -r /dev/hda2
It will create /boot/initrd.tgz file, that we'll want to load it along with the kernel at boot time. Now edit the /etc/lilo.conf :
kedit /etc/lilo.conf
The linux part should look like this :
image = /boot/vmlinuz
initrd = /boot/initrd.gz
root = /dev/hda2
label = newLinux
read-only
image = /boot/vmlinuz-huge-smp-2.6.21.5-smp
root = /dev/hda2
label = oldLinux
read-only
Then, run lilo and reboot to check whether it works.
In order to automate the suspend process whenever we close laptop lid, we have to configure acpid. Excerpted from the link:
Basically, acpid just executes scripts residing in /etc/acpi/actions. Which script to launch at which event is configured in several files in /etc/acpi/events. All actions are documented in /var/log/acpid.
The event script needs to be created within /etc/acpi/events and can have any name you like. In this case we call it lid because it will trigger the lid event. Do # vi /etc/acpi/events/lid and make it look like this:
event=button/lid
action=/etc/acpi/actions/sleep.sh %e

The "event" line is a regular expression specifying the events we're interested in. You can determine what the event strings are from looking at /var/log/acpid after trying to suspend, close the lid, etc. . You can find information about the event strings ibm-acpi generates for certain keys at the Special Keys HOWTO.

The "action" line is the command to be executed when these events are dispatched. In this example we call the sleep.sh script residing in /etc/acpi/actions and pass the event description text using the %e placeholder.
Our example /etc/acpi/actions/sleep.sh script looks as follows:
#!/bin/sh

# if launched through a lid event and lid is open, do nothing
echo "$1" | grep "button/lid" && grep -q open /proc/acpi/button/lid/LID/state && exit 0

# remove USB 1.1 driver
rmmod uhci_hcd

# sync filesystem and clock
sync
/sbin/hwclock --systohc

# switch to console
FGCONSOLE=`fgconsole`
chvt 6
/usr/sbin/radeontool light off

# go to sleep
sleep 5 && echo -n "mem" > /sys/power/state

# readjust the clock (it might be off a bit after suspend)
/sbin/hwclock --adjust
/sbin/hwclock --hctosys

# reload USB 1.1 driver
modprobe uhci_hcd

# turn on the backlight and switch back to X
radeontool light on
chvt $FGCONSOLE
Then reboot, to restart the acpi daemon.

More information is available at :
http://www.thinkwiki.org/wiki/How_to_configure_acpid
http://ibm-acpi.sourceforge.net/README
http://www.thinkwiki.org/wiki/How_to_make_ACPI_work
http://www.thinkwiki.org/wiki/ThinkWiki
http://ibm-acpi.sourceforge.net/
http://www.linux.com/articles/54610

Slackware experience

To this day, I can still claim that I'm no expert in these areas, still a noob in his early stage. Nevertheless, here's my story.
Well, to begin with, my experience with Linux started when I installed Red Hat 6 in 1999. Back then, it was hardly useful for day-to-day use, and further, having no internet connection at home made the experience simply lackluster. During my undergraduate days, I had several encounters that in one way or another further developed my interest in Linux. I tried Gentoo on my PC which took me 2 days to install it. If I remember it correctly, the installer had to download every single source from the net, and then compiling each to a hardware specific package which made the installation process, well, very time consuming. Some other distros that I had tried are SUSE, Fedora, Debian, Slax, and Knoppix. I also used Solaris during industrial attachment and in my recent job. I was merely using it to run some ic design applications (Cadence, Synopsys, etc) and no more than that.
Here's the Slackware story. During the inter-sem project, I was doing a robotic project on environmental mapping. The idea of environmental mapping (SLAM) is simply to use the robot, which is RWI Magellan Pro in this case, to wander around the environment and then to make a map based on several features captured from the environment and on the same time to localize itself in the map. The RWI Magellan Pro had a pretty old hardware and Red Hat 6.2 installed in it with its own controller system, i.e. rFlex controller. Basically, we could access the robot devices and sensors through the library provided by rFlex controller. I spent couple of weeks to understand the system and also on SLAM. Then, I found this Player/Stage project which basically provides a simple interface to devices and sensors in the robot. The cool thing is, it acts as a client and server system that communicates over the IP network. When Player is running on the robot, the client control program could be run from other computer (a very fast system that could process algorithms in real time), and connects to it via a standard TCP socket. Another good thing is that Player/Stage could be run on many robotics system, thus code developed in one system can be run on others with very few modifications.
Problem is, Player/Stage needs several libraries that are not provided by Red Hat 6.2, and for some reasons which I can't really recall, I had to install the newer kernel for that. Anyway, I decided to install a newer version of Linux, and I chose Slackware 10.0 for this after trying several other distros like Red Hat 9, Debian, etc. I can't really remember why I ended up with Slackware. Based on the project report, Slackware was chosen due to its small size (the hard disk in Magellan Pro is kinda small) and robustness compared to other system, and more importantly the kernel version 2.4.26 which is compatible with Player/Stage. I think, I also had some problems installing Player/Stage on Red Hat 9. FYI, Magellan Pro doesn't have CD-ROM drive in it, so the installation was done via NFS. Anyway, for obvious reason, I tried to install Player/Stage on PC first in order to determine which Linux distribution to use.
The Slackware installation, as I remember, didn't go really smoothly, but anyway in the end the system worked as intended. Then, I installed (in no particular order): Player, Stage, Pmap, Lodo. Some time was then spent to install Sick LMS laser sensor which created much hassle, and by this time the 6-week project was near to its end and yet I haven't implemented any single code for the SLAM.
Apparently, Player/Stage has this Pmap package that is used for laser-based mapping, which made the system, or the project for this matter, complete with a few modification on the Pmap source code and calibration on the odometer. Also, I managed to transfer Matlab code on Kalman filter implementation of SLAM to Java that didn't really work on the robot (it somehow worked on Stage). According to my supervisor, the idea of Kalman filter is understandable to some extent however the implementation is rather tedious for my level. He also convinced me that I wouldn't be able to implement the algorithm on the robot at such stage (undergraduate) with very little time left.
Anyway, my supervisor was totally satisfied with my work (since previously the robot had lied there uselessly on the lab) and instead, decided to change the project name to fit the current work. He then offered me to continue the project for my final year project.
To his surprise, I decided not to continue the project as I thought I have done what was really need to be done. Anyway, in my humble opinion, the field of robotics and AI in Singapore is really way behind than that of other countries like Japan, Europe, or USA. While those local polytechnic students are still trying to find out how to win the robot soccer competition, our fellows in Japan have created a system that mimics human being, responds and interacts to us.
So, I then moved to IC design and electronics industry, which was really interesting back then, but no so now, hehe.
Well, to my understanding, I just have some mere surface knowledge on each field, that enables me to work in each industry but not enough for me to start my own company. IC design was really interesting, but I ended up doing analog design which was more to intuition than logic. I managed to produce two local conference papers, not of quality one though.
I guess, I really have to go back to the basic, which is programming, that has excite me since back then in junior high. Anyway, recently I found this operating system, Minix, which actually inspired the Linux to the its existence now. While Linux kernel is based on monolithic kernel, the newer version of Minix (Minix 3) is based on micro kernel, which is more elegant and reliable. I decided to learn more on it, and just borrowed a book from the library: "Operating Systems: Design and Implementation". Hopefully, I could finish it by the end of the year.
Back to Slackware, I'm still using it up to now on my Thinkpad T40 laptop. Hopefully, it thrives. Well, if it is not, then I hope Minix will thrive and become the most popular OS, which is rather impossible here due to the concept of inertia, as explained by Prof. Tanenbaum.

Monday, October 8, 2007

NTFS on Linux

To read and to write to NTFS file system in Linux is possible via ntfsmount driver. After installing FUSE and ntfsprogs, create these symbolic links:
ln -s /usr/local/lib/libntfs.so.10 libntfs.so.10
ln -s /usr/local/lib/libfuse.so.2 libfuse.so.2
Then in /etc/fstab, add:
/dev/hda1 /mnt/windows fuse.ntfs rw 1 0 locale=be_BY.UTF-8 0 0

Friday, October 5, 2007

Changing window manager in KDE

By setting environment variables KDEWM to the specific window manager, we could use that window manager under KDE. Example here is to set the window manager to blackbox
setenv KDEWM blackbox

Thursday, October 4, 2007

Slackware 12.0 changelogs

The changelogs of Slackware 12.0 (stable) is available here. Packages are available here.

Tuesday, October 2, 2007

Mplayer and Sopcast in Slackware 12.0

From the website, SopCast is a simple, free way to broadcast video and audio or watch the video and listen to radio on the Internet by adopting P2P technology. It needs media player such as vlc or mplayer on top of it. Basically, from my understanding, it only provides streams of data in a certain format (i.e. wmv3) that is readable, and thus viewable, by the media players. Since vlc doesn't support wmv3 format, we'll have to rely on mplayer for this particular case.
I downloaded the Slackware package for mplayer from here.
Then, I downloaded these 2 files for SopCast:
http://download.sopcast.com/download/sp-auth.tgz
http://www.sopcast.com/download/libstdcpp5.tgz
From the readme file :
SopCast client version 1.0.2 library dependency
If you don't have stdc++ 5 in your system, please download the libstdcpp5.tgz from
www.sopcast.com, and copy the
libstdc++.so.5
libstdc++.so.5.0.1
to /usr/lib/

The copy command must be:
cp -a libstdc++.so.5* /usr/lib
With '-a' parameter, and you must login as root.

1. sp-sc-auth

A simple example of sp-sc command line.
./sp-sc-auth sop://broker.sopcast.com:3912/6098 3908 8908 > /dev/null &
Start to transfer channel 6098, and you can play it on 8908 with VLC or mplayer
by open the url: http://localhost:8908/tv.asf
Then, from konsole:
mplayer -zoom http://localhost:8908/tv.asf
What's interesting from the Linux version of vlc is that here we could stream several channels at the same time, which is not possible in that of Windows XP's.
From konsole:
Start streaming channel 1(Channel ID:6001, Port: 8908)
./sp-sc-auth sop://broker.sopcast.com:3912/6001 3908 8908 > /dev/null &
Show the channel at mplayer:
mplayer http://localhost:8908/tv.asf
Start streaming channel 2:(Channel ID:6002, Port 8909)
./sp-sc-auth sop://broker.sopcast.com:3912/6002 3908 8909 > /dev/null &
Show the channel at mplayer: (Note, now the TCP port is 8909)
mplayer http://localhost:8909/tv.asf
etc

Python IDLE in Linux

A bash script to start Python IDLE in Linux :
#!/bin/bash
cd /usr/lib/python2.5/idlelib/
python PyShell.py &
cd ~

slackbuilds.org

I've found this website : www.slackbuilds.org that provides packages for Slackware, to be compiled with the SlackBuild scripts. Usage of the slackbuild script can be found here. The resulting Slackware official package is then to be installed with installpkg command. Typically, the resulting package will be in /tmp.

Installation of openoffice.org
First download the slackbuild script here.
Untar it.
Download the source from here.
Copy the source the the slackbuild directory:
cp OOo_2.3.0_LinuxIntel_install_en-US.tar.gz openoffice.org
Make the script executable:
chmod +x openoffice.org.SlackBuild
./openoffice.org.SlackBuild
When done creating the package, install it with installpkg:
cd /tmp
installpkg openoffice.org-2.3.0_en_US-i586-1_SBo.tgz

Monday, October 1, 2007

Important Stuffs in Setting Up Your Slackware

USB Flash Drive
modprobe usb-storage
cd /mnt
mkdir usbflash
nano /etc/fstab
add: /dev/sda1 /mnt/usbflash vfat,ntfs noauto,owner,user,umask=0 0 0
The sda1 represents the device name that the kernel gives the USB flash when it gets plugged in.
mount /mnt/usbflash
Slocate: It provides a secure way to index and quickly search for all files on
your system regardless of ownership.
slocate -u
slocate
Wireless LAN:
Based on /sbin/lspci, the driver for the system (IBM Thinkpad T40) is Intel Corporation PRO/Wireless LAN 2100 3B Mini PCI Adapter. After searching the net, I've got these results: http://ipw2100.sourceforge.net/, http://jrblevin.freeshell.org/linux/ipw2100/, http://ipw2100.sourceforge.net/. According to the installation manual , starting with Linux kernel version 2.6.14, an old stable version of the Intel PRO/Wireless 2100 Network Connection driver is provided in the kernel. All we need to do is to download the firmware from http://ipw2100.sf.net/firmware.php , untar it, and copy all the files to /lib/firmware. The specific files are :
ipw2100-(version number).fw Boot strap image
ipw2100-(version number)-i.fw Used in IBSS mode
ipw2100-(version number)-p.fw Used in monitor mode
Load the module with:
modprobe ipw2100
check the output of dmesg to see if it is successful:
dmesg | tail
Slackpkg: is a tool to install or upgrade Slackware official packages from a mirror.


Firefox plugins

Here are the necessary plugins as add-ons on firefox (https://addons.mozilla.org/en-US/firefox/browse/type:7)
1. Adobe Flash Player
Download the tarball
tar zxvf install_flash_player_9_linux.tar.gz
cd install_flash_player_9_linux/
cp libflashplayer.so ~/usr/lib/mozilla/plugins/
cp flashplayer.xpt ~/usr/lib/firefox-2.0.0.4/components/
2. Adobe Reader
Download the tarball
tar zxvf AdobeReader_enu-7.0.9-1.i386.tar.gz
cd AdobeReader
./INSTALL
all the files are installed at /usr/local/Adobe/Acrobat7.0/
acroread
expr: syntax error
message shows, to work it out :
nano /usr/local/Adobe/Acrobat7.0/
comment the line : check_gtk_ver_and_set_lib_path "$MIN_GTK_VERSION"
i.e. # check_gtk_ver_and_set_lib_path "$MIN_GTK_VERSION"
3. JRE
The Slackware package can be found from the slackware stable repository
http://plugindoc.mozdev.org/faqs/java.html#Linux
ln -s /usr/lib/jre1.6.0_02/plugin/i386/ns7/libjavaplugin_oji.so /usr/lib/mozilla/libjavaplugin_oji.so



Slackware 12.0 installation

These are the steps encountered during the installation of Slackware 12.0 in my IBM T40 system.
1. When booting from CD1, press enter after boot: appears.
2. Login as root.
3. cfdisk, this will create the partition layout of the hardisk. Set it as below:
Name Flags Type Fs type Size
hda1 Boot Pri NTFS 29417.48
hda2 Pri Linux 6967.30
hda3 Pri Linux swap 495.446
4. Type setup.
5. Addswap
6. Check swap partition for bad blocks -> No
7. Swap space configured -> OK
8. Select Linux installation partition: /dev/hda2 Linux
9. Format partition /dev/hda2 -> Yes
10. Select filesystem for /dev/hda2 : ext3
11. FAT or NTFS partitions detected, add to /etc/fstab -> Tes
12. Select partition to add to /etc/fstab: /dev/hda1
13. Pick mount point for /dev/hda1 : /mnt/windows
14. Media selection : slackware CD or DVD
15. Package series selection
16. Select prompting mode : full
17. Make USB flash boot : skip
18. Modem configuration : /dev/ttys3
19. Installation of LILO : simple
1024x768x256
LILO destination MBR
20. Network config: DHCP
21. Confirm starting services to run
22. Hardware clock set to UTC : no
23. Timezone config : Singapore
24. Default window manager : KDE
25. Set root passwrd: **
26. We're done with the setup, reboot
27. startx, to start the x environment

Adding user is performed under KDE environment, KUser:
-Login shell: /bin/tcsh

From konsole: nano /etc/sudoers, then add the line :
username ALL=(ALL) NOPASSWD: ALL

From konsole: /sbin/lspice:
00:00.0 Host bridge: Intel Corporation 82855PM Processor to I/O Controller (rev 03)
00:01.0 PCI bridge: Intel Corporation 82855PM Processor to AGP Controller (rev 03)
00:1d.0 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 01)
00:1d.1 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 01)
00:1d.2 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 01)
00:1d.7 USB Controller: Intel Corporation 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (rev 01)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 81)
00:1f.0 ISA bridge: Intel Corporation 82801DBM (ICH4-M) LPC Interface Bridge (rev 01)
00:1f.1 IDE interface: Intel Corporation 82801DBM (ICH4-M) IDE Controller (rev 01)
00:1f.3 SMBus: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (rev 01)
00:1f.5 Multimedia audio controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 01)
00:1f.6 Modem: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (rev 01)
01:00.0 VGA compatible controller: ATI Technologies Inc Radeon Mobility M7 LW [Radeon Mobility 7500]
02:00.0 CardBus bridge: Texas Instruments PCI1520 PC card Cardbus Controller (rev 01)
02:00.1 CardBus bridge: Texas Instruments PCI1520 PC card Cardbus Controller (rev 01)
02:02.0 Network controller: Intel Corporation PRO/Wireless LAN 2100 3B Mini PCI Adapter (rev 04)
02:08.0 Ethernet controller: Intel Corporation 82801DB PRO/100 VE (MOB) Ethernet Controller (rev 81)