SuSE 8.1 & WinXP Pro on Dell Inspiron 4150

Below is my modest contribution for those who would like to learn more about that beautiful thing (Linux) on that ugly beast (Dell Inspiron 4150). The ugly beast has got it nickname: theUgly - this comes after the beauty I had before (Sony VAIO PCG-Z600NE) - they are not comparable in any sense.

As usually, I feel obliged to have a kind of disclaimer: what follows is my own memento, and how it worked (or not) for me. I can not take any responsibility for you and your machine if you hurt it by following my writing: you have the responsibility for your own acts :-)

TheUgly is fully recognised by SuSE 8.1 installer, Yast:

tanja> /sbin/lspci
00:00.0 Host bridge: Intel Corp. 82845 845 (Brookdale) Chipset Host Bridge (rev 04)
00:01.0 PCI bridge: Intel Corp. 82845 845 (Brookdale) Chipset AGP Bridge (rev 04)
00:1d.0 USB Controller: Intel Corp. 82801CA/CAM USB (Hub #1) (rev 02)
00:1e.0 PCI bridge: Intel Corp. 82801BAM/CAM PCI Bridge (rev 42)
00:1f.0 ISA bridge: Intel Corp. 82801CAM ISA Bridge (LPC) (rev 02)
00:1f.1 IDE interface: Intel Corp. 82801CAM IDE U100 (rev 02)
00:1f.5 Multimedia audio controller: Intel Corp. 82801CA/CAM AC'97 Audio (rev 02)
00:1f.6 Modem: Intel Corp. 82801CA/CAM AC'97 Modem (rev 02)
01:00.0 VGA compatible controller: ATI Technologies Inc Radeon Mobility M7 LW [Radeon Mobility 7500]
02:00.0 Ethernet controller: 3Com Corporation 3c905C-TX/TX-M [Tornado] (rev 78)
02:01.0 CardBus bridge: Texas Instruments PCI1420
02:01.1 CardBus bridge: Texas Instruments PCI1420

I describe below how I proceeded to shrink the originally installed WinXP Pro, then to install SuSE 8.1 and do its full update (up to Aug 13, 2003), in order to try the upgrade to SuSE 8.2 with a very powerfull tool: apt. Some parts might not be finished, but I'm leaving for a few weeks, and wanted simply to share my experiences up to now.

If you find something very wrong, or on the contrary if this page helped you, write me to <tanja99_A_T_freesurf.ch> (this is to avoid the spam mail).

Preparation: Clean install of Win XP Pro

At the boot, enter BIOS (by pressing F2 button) and set the following:

Exit BIOS while saving changes, and when in Windows, insert the system installation CD (from Dell) and reboot. The system will now boot from the CD. Follow the instructions as they appear. I deleted all the partitions and created 3 new ones:

This partitioning makes is safer if something goes wrong: you never loose all of the data, as in the case everything is on one partition. Note that the sum makes about the half of my harddisk space; I will use the E: partition for both WinXP and Linux. The leftover space of about 14 GB will be for Linux system.

Since I want to have access to both OSs from each other, there are constraints on the type of the file system. XP deploys by default the NTFS, but Linux can only read it (writing is still experimental, and partitioning of NTFS partitions from Linux is still not possible). Therefore, you should choose FAT32 file system, when asked to proceed with formatting of C:. In short:

This will take about 10 more minutes and the first reboot. After that, the installation of XP continues. When done, it have taken all together 20 minutes.

When you have the running XP system, only the partition C: has been formatted, in order to install the system on it. You'll have to format the other two partitions,. In the explorer:

Finally, I changed the file system for the system partition from FAT32 to NTFS - this is better option for XP, and I don't want to have write access to it from Linux anyway. To do this, open command console (start menu -> run and type in cmd), and in the console, type in the command:

> convert C: /FS:NTFS

And that's it. Now, let's move to the pinguin.

Clean re-install of SuSE 8.1

TODO

There are a few things that I wanted to fix, before doing anything else.

What and how to mount: /etc/fstab

If you do the clean install, SuSE will automatically recognise all your win partitions, and mount them under /windows/C, /windows/D, etc. When you re-install SuSE over an existing one, it is likely that SuSE doesn't recognise (and thus doesn't mount) properly the NTFS partitions. Also, to personalise mount options, I had to modify the /etc/fstab file. I found a lot of useful info at http://linux-ntfs.sourceforge.net/info/ntfs.html#4.6.

After the re-installation of SuSE 8.1, as root, first create the mounting points (note: with the above installation, SuSE already created /win/e; if it doesn't, you need to create first /win, then /win/e, then what follows):

root # ls /win
.  ..  e
root # mkdir /win/c
root # mkdir /win/d
root #

Then edit your /etc/fstab file; here is mine:

root # cat /etc/fstab
/dev/hda9       /                    ext3       defaults              1 1
/dev/hda7       /boot                ext2       defaults              1 2
/dev/hda11      /home                ext3       defaults              1 2
/dev/hda10      /var                 ext3       defaults              1 2
#/dev/hda6      /win/e               vfat       defaults              0 0
#---new: readonly. a user and the group 'users' have r-x, others have ---
/dev/hda1       /win/c               ntfs       ro,umask=0227,gid=users     0 0
/dev/hda5       /win/d               ntfs       ro,umask=0227,gid=users     0 0
#---new: read and write. all have rwx
/dev/hda6       /win/e               vfat       rw,umask=0000,gid=users     0 0
#---end new
/dev/hda8       swap                 swap       pri=42                0 0
devpts          /dev/pts             devpts     mode=0620,gid=5       0 0
proc            /proc                proc       defaults              0 0
usbdevfs        /proc/bus/usb        usbdevfs   noauto                0 0
/dev/cdrecorder /media/cdrecorder    auto       ro,noauto,user,exec   0 0
/dev/fd0        /media/floppy        msdos      noauto,user,sync      0 0
root #

I had to reboot in order for these changes to take effect, but before that, I've set some smaller stuff.

Network (eth0)

Since I'm using my Linux box at home, without a LAN/WAN, to avoid annoying automatic network search on boot, I made it "manual" instead of "onboot":

# file /etc/sysconfig/network/ifcfg-eth0
/BOOTPROTO='dhcp'
REMOTE_IPADDR=''
STARTMODE='manual' # was 'onboot'
WIRELESS='no'
device='eth0'

Then run SuSEconfig:

root # SuSEconfig

Power Management (ACPI vs. APM)

By default, ACPI is enabled when SuSE 8.1 is installed, and with Dell Inspiron 4150, it doesn't work properly, i.e., I have no access to battery options (e.g., low battery) and things like suspend or standby. So, as suggested in http://sdb.suse.de/en/sdb/html/81_apm.html, you can add the option 'acpi=off' to the boot prompt when first installing SuSE 8.1, or later on, with Yast -> System -> Bootloader configuration -> Expert manual configuration (this is the content of the file /boot/grub/menu.lst, but don't modify it with an editor, since you can't catch an error; Yast checks that there are no errors in the file before saving it):

title linux
    kernel (hd0,6)/vmlinuz root=/dev/hda9  cdromdevice=hdc hdc=ide-scsi acpi=off vga=791

and then to enable any user to go into suspend or standby mode, in the root console type:

root # chown root /usr/bin/apm
root # chmod +s /usr/bin/apm

Xconsole

To avoid some of Xconsole messages (at the login screen):

Can't locate module sound-slot-1
Can't locate module sound-service-1-0

as explained in http://sdb.suse.de/sdb/en/html/ubrueck_xconsole.html, from KDE control centre -> Sound -> Mixer, set "Maximum number of probed devices per mixer" to 1.

~/.bashrc

I add a few aliases for the commands I'm used to, at the end of my (normal) user .bashrc:

# cat /home/tanja/.bashrc
...
# -- aliases
alias lk='ls -al'
alias ex='exit'
alias lo='logout'
alias mv='mv -i'
alias rm='rm -i'

Now I rebooted.

Going online with an analogue ADSL modem (eci chipset)

I was lucky that:

Installation and configuration

Download the latest driver (the .rpm) from http://eciadsl.flashtux.org/index.php?lang=en. Do NOT plug the modem yet, and become root. I installed the rpm from Konqueror with Yast (but could have done from the console, with rpm -i eciadsl-usermode-0.8-1.i386.rpm; SuSEconfig). To configure it, you need to run a GTK-based application - you then must enable the root to display at your (normal user) display:

tanja > xhost +localhost
tanja > su
Password:
root # /usr/local/bin/eciconf.sh

There type in user and password (as given by the provider), then choose your provider (mine is CH:Sunrise), modem type (mine is Zyxel Prestige 630-41), PPP mode (mine is LLC_RFC2364), check "Use DHCP" and press Create Configuration, then Quit.

Removing dabusb kernel module

Now plug in the modem, and you'll see that the problematic dabusb kernel module has been loaded:

root # lsmod | grep usb
dabusb                 33840   1
usb-uhci               21612   0  (unused)
usbcore                56768   1  [dabusb snd hid usb-uhci]
root #

This same will happen (i.e., dabusb module will be loaded) each time after you upgrade the kernel AND plug-out then plug-in the modem.

So you have to remove it for the eci-driver to work. With the first version of the driver I used (v 0.6), there was no gentle way to remove the dabsub, and in particular not with the scripts provided with the driver - I swear, I spent quite some time chasing dabsub, and all its clones (dabsub.removed, dabsub.removed.removed, ...), created with the scripts provided by the driver.

The simplest procedure is the following:

  1. unplug the modem
  2. uninstall the dabsub and verify it's not there anymore (if you compiled the kernel by hand, don't forget to remove dabusb support from the kernel configuration as well):
    root # modprobe -r dabusb && rm -f $(modprobe -l | grep dabusb) && depmod -a
    root # lsmod | grep usb
    usb-uhci               21612   0  (unused)
    usbcore                56768   1  [snd hid usb-uhci]
    root #
    root # ls /lib/modules/2.4.19-4GB/kernel/drivers/usb/dab*
    ls: /lib/modules/2.4.19-4GB/kernel/drivers/usb/dab*: No such file or directory
    root #
    
  3. plug in the modem.

Connecting (from root console)

Start the modem with:

root # /usr/local/bin/startmodem

setting up USB support (1/5)..

loading firmware (2/5)..

firmware seems to be already loaded

setting up modem (3/5)..

ECI load 2: success
synchronization successful

connecting modem (4/5)..

using channel 4
Using interface ppp0
Connect: ppp0 <--> /dev/pts/3
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x33dc6a3c>]
.......
connection successful

setting up route table (5/5)..

waiting for ppp0..
root #

You can verify that it works by going to an URL with the browser (obviously), but for the quick check, you can "ping" a known host (and stop it with Ctrl-C), i.e.:

root # ping www.google.com
PING www.google.com (216.239.51.99) from 62.167.124.201 : 56(84) bytes of data.
64 bytes from 216.239.51.99: icmp_seq=1 ttl=49 time=159 ms
64 bytes from 216.239.51.99: icmp_seq=2 ttl=49 time=153 ms
64 bytes from 216.239.51.99: icmp_seq=3 ttl=49 time=153 ms

--- www.google.com ping statistics ---
3 packets transmitted, 3 received, 0% loss, time 2025ms
rtt min/avg/max/mdev = 153.046/155.211/159.362/2.953 ms
linux:~ #

Or, to check what of the networking stuff is running (ppp0 is the modem):

root # ifconfig
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:110 errors:0 dropped:0 overruns:0 frame:0
          TX packets:110 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:7172 (7.0 Kb)  TX bytes:7172 (7.0 Kb)
        
ppp0      Link encap:Point-to-Point Protocol
          inet addr:62.167.124.201  P-t-P:193.192.254.26  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1492  Metric:1
          RX packets:18 errors:0 dropped:0 overruns:0 frame:0
          TX packets:20 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:3225 (3.1 Kb)  TX bytes:2217 (2.1 Kb)

root #

To allow any user to launch the modem, the FAQ says you should add the following line in /etc/sudoers file:

# file /etc/sudoers
...
%users ALL=NOPASSWD:/usr/local/bin/startmodem

where '%users' stands for the group name (I could have written my username 'tanja' instead), and then start the modem with:

tanja> sudo startmodem

I tried, but it exited after the step 3 above, so I simply removed the line from /etc/sudoers file, and accept to type in the root password whenever I start the modem.

Connecting (from desktop icon)

Finally, I haven't found a way to launch the ADSL modem with KInternet (the authors say they are working on building the driver as a kernel module, so in the future, there should be some kind of this integration with KInternet).

In the meantime, for my convenience, I simply created a desktop icon: right click on the desktop -> Create new -> Link to application. In its Execute tab, the command is /usr/local/bin/startmodem, check the box "Run in terminal", and check the box "Run as a different user" and type in: root. When launched, it will ask for the root password...

And enjoy the surfing!

If there is a problem, here a few hints from my experience:

KMail

I configured it with my main private email address, smtp server address of my ISP (outgoing), and several pop accounts (incoming) that I have. I additionally set that all the mails for root, forwarded to me (as a normal user), be read by KMail, as well.

Infrared (IrDA) - on SuSE 8.1 (should be similar for SuSE 8.2)

Since it takes a lot of power due to frequent discovery of the infrared world around, the "irda" module is usually not loaded on boot, but you have to load it manually. Also you must insure that you've enabled the IrDA support in BIOS (either SIR mode or FIR mode, if supported), and that you've assigned it a serial port (in my case, COM4).

At most notebooks, the IrDA will work over serial port, i.e., in SIR mode. The lucky ones, who have a FIR chipset supported in Linux (as is the case for Inspiron 4150, with SMC IrCC chipset, supported by smc-ircc.o module), may use it instead of the slower SIR mode.

In any case, to see that you've "discovered" other infrared devices around, there are basically three things to do: (1) start the irda support, (2) check that it sees your infrared device/s, and (3) stop the irda support. A typical cycle looks like this on a terminal:

root # rcirda start
Starting service
IrDA
done
root #
root # irdadump
19:37:34.872386 xid:cmd fc5dca4a > ffffffff S=6 s=0 (14)
19:37:34.962383 xid:cmd fc5dca4a > ffffffff S=6 s=1 (14)
19:37:35.052382 xid:cmd fc5dca4a > ffffffff S=6 s=2 (14)
19:37:35.142383 xid:cmd fc5dca4a > ffffffff S=6 s=3 (14)
19:37:35.232382 xid:cmd fc5dca4a > ffffffff S=6 s=4 (14)
19:37:35.322384 xid:cmd fc5dca4a > ffffffff S=6 s=5 (14)
19:37:35.322375 xid:rsp fc5dca4a < 3cabb000 S=6 s=4 BJC-85 hint=8804 [ Printer IrCOMM ] (24)
19:37:35.412384 xid:cmd fc5dca4a > ffffffff S=6 s=* linux hint=0400 [ Computer ] (21)
19:37:37.872386 xid:cmd fc5dca4a > ffffffff S=6 s=0 (14)
19:37:37.962386 xid:cmd fc5dca4a > ffffffff S=6 s=1 (14)
19:37:38.052384 xid:cmd fc5dca4a > ffffffff S=6 s=2 (14)
19:37:38.052375 xid:rsp fc5dca4a < 3cabb000 S=6 s=1 BJC-85 hint=8804 [ Printer IrCOMM ] (24)
19:37:38.142383 xid:cmd fc5dca4a > ffffffff S=6 s=3 (14)
19:37:38.232382 xid:cmd fc5dca4a > ffffffff S=6 s=4 (14)
19:37:38.322383 xid:cmd fc5dca4a > ffffffff S=6 s=5 (14)
19:37:38.412383 xid:cmd fc5dca4a > ffffffff S=6 s=* linux hint=0400 [ Computer ] (21)
16 packets received by filter
root #
root # rcirda stop
Shutting down service
IrDA
done
root #

The lines with "linux" represent theUgly, those with "BJC-85" are for my printer.

To stop displaying the output of irdadump, just press ctrl-C. The above procedure is generic, and thus applies to both SIR and FIR mode.

SIR irda

With Yast -> System -> Edit syscongif -> Hardware -> Infrared, then value for IRDA_PORT should be /dev/ttyS3 (it corresponds to COM4 I've set in BIOS).

Now, check that it works by doing start/dump/stop procedure above.

NOTE 1: If you have configured FIR and want to come back to SIR mode (for any reason), you have to comment the lines in the 3 files that you've edited while setting for FIR mode. Otherwise, wrong modules are loaded, and the serial port is just short-circuited.

NOTE 2: It may happen that your infrared device (printer, or other) is a bit slow in discovery, so you might need to increase the timeout, as described below.

FIR irda

Based on some hints, and on my previous experience with Vaio, I figured out the following things to do to set up correctly an IR port with Dell Inspiron 4150.

There are all in all 3 (eventually 4) files to edit, so I go with the 4-step procedure below. The first 3 were necessary for me to get it right (i.e., start/dump/stop). I realised I need the fourth step as I tried to set up the printer Canon BJC-85.

As a general rule, before editing the files below, first make a copy! My convention is to put comment tags "#tbk start" and "#tbk end" around the parts of system files I modify (it's useful when writing this kind of cookbook :-).

  1. In /etc/sysconfig/irda, there is only one variable. My file looks so:
    # tbk start
    # Uncomment ttyS3 for SIR, comment irda0
    #IRDA_PORT=/dev/ttyS3
    # Uncomment irda0 for FIR, comment out ttyS3
    # (tried with "smc-ircc" instead of "irda0", but doesn't work)
    IRDA_PORT="irda0"
    # tbk end
    

    Note: You can achieve this also by running Yast as for SIR mode, but the current uncommented value will be overwritten with the new setting. By editing the file directly, you can keep the comments as a reminder.

  2. In /etc/modules.conf, search for string "irda", and that part of the file should look something like this:
    alias char-major-161 ircomm-tty
    #tbk start
    # To use SIR, comment the following two lines. For FIR, UNcomment them.
    alias irda0 smc-ircc
    options smc-ircc ircc_dma=3 ircc_irq=3
    #tbk end
    

    For some other machines, it may be that after rebooting here, after step 2, everything works. However, I had error messages in /var/log/messages telling that the smc-ircc failed to load, so I applied the same trick l had to do in the past with the Vaio, described below, in step 3.

  3. In /etc/init.d/serial
    # These are the standard COM1 through COM4 devices
    #
    # run_setserial /dev/ttyS0 uart 16550A port 0x3F8 irq 4
    # run_setserial /dev/ttyS1 uart 16550A port 0x2F8 irq 3
    # run_setserial /dev/ttyS2 uart 16450 port 0x3E8 irq 4
    # run_setserial /dev/ttyS3 uart 16450 port 0x2E8 irq 3
    #tbk start
    #To use FIR, UNcomment the next line. To use SIR, comment it.
    run_setserial /dev/ttyS3 uart none
    #tbk end
    

    This line will disable the IrDA over the serial port, so that it doesn't interfere with smc-ircc (FIR chip).

    Now, first reboot (since modified system files manually), and then check that it works by doing start/dump/stop procedure above. The end of the file /var/log/messages traced this:

    Feb 25 21:16:14 linux irattach: executing: '/sbin/modprobe irda0'
    Feb 25 21:16:14 linux kernel: found SMC SuperIO Chip (devid=0x0e rev=01 base=0x002e): LPC47N252
    Feb 25 21:16:14 linux kernel: SMC IrDA Controller found
    Feb 25 21:16:14 linux kernel:  IrCC version 2.0, firport 0x300, sirport 0x2e8 dma=3, irq=3
    Feb 25 21:16:14 linux kernel: IrDA: Registered device irda0
    Feb 25 21:16:14 linux irattach: executing: 'echo 1 > /proc/sys/net/irda/discovery'
    Feb 25 21:16:14 linux irattach: Starting device irda0
    Feb 25 21:16:14 linux kernel: spurious 8259A interrupt: IRQ7.
    Feb 25 21:16:14 linux irattach: executing: 'echo linux > /proc/sys/net/irda/devname'
    Feb 25 21:16:33 linux irattach: got SIGTERM or SIGINT
    Feb 25 21:16:33 linux irattach: exiting ...
    

    At this point, I decided to configure my printer with Yast, but it didn't work - my printer is a bit lazy... So, I had to do the step 4, as follows.

  4. Due to Lazy infrared device in file /etc/init.d/irda, add the two lines to get something similar to this:
    startproc /usr/sbin/irattach ${IRDA_PORT} -s >/dev/null
    #tbk start
    sleep 1
    echo 120 > /proc/sys/net/irda/slot_timeout
    #tbk end
    

    I found the hint here. I just had to find out what is the file in SuSE 8.1 which has irattach command, and to adjust the timeout so it works with my printer. What the dummy I concluded is, basically, the following. When you start the irda (SuSE does it its way, but it happens after irattach), there will be a number of files created under /proc/***. One of them is /proc/sys/net/irda/slot_timeout, ant the default value in there is 90 - I had to increase it to 120 (after trying with 100 and 110 - must be in steps of 10!). The sleep 1 is just to let enough time to the system to bring to existence /proc/sys/net/irda/slot_timeout file.

And now, I could configure my printer wireless!

Printer (Canon BJC-85 over infrared)

The hint on "discovery inertia" of the printer described above was of great help, and I just had to find out two things: the corresponding file with SuSE 8.1, and the sufficient timeout value.

OpenOffice

SuSE 8.1 installed for you OpenOffice 1.0.1 for the whole system. But the first time you click the icon on the Desktop (as a normal, non-root user), you'll be asked to do the so called 'user installation'. Important is to choose Workstation (not local) installation. This will create a directory under your home directory.

In the meantime, there is a newer version of OpenOffice, 1.1 - you can download it from http://www.openoffice.org.

Hints

Doing upgrade with YOU (Yast online update)

With YOU, it took 3 times and about an hour to get all the updates available at that date (Sun, 10 Aug 2003). Since there were some KDE updates, I reboot.