Ubuntu Linux on DELL Vostro 1510

Recentley I recieved my brand-new DELL Vostro 1510 with the following hardware built-in:

  • Intel Core 2 Duo T5870 (2.0 GHz, 800 MHz, 2 MB)
  • 15.4″ Widescreen Display WXGA+
  • 3 GB 667 MHz DDR2 Dual Channel RAM
  • 256 MB NVIDIA GeForce 8400M GS
  • Intel Next-Gen Wireless-N Mini-PCI-Card
  • 1.3 MP built-in Webcam

Installing Ubuntu Linux 8.04 LTS (codenamed Hardy Heron) wasn’t really that though, but some issues arised.

First of all, the outputs of lspci:
00:00.0 Host bridge: Intel Corporation Mobile PM965/GM965/GL960 Memory Controller Hub (rev 0c)
00:01.0 PCI bridge: Intel Corporation Mobile PM965/GM965/GL960 PCI Express Root Port (rev 0c)
00:1a.0 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #4 (rev 03)
00:1a.1 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #5 (rev 03)
00:1a.7 USB Controller: Intel Corporation 82801H (ICH8 Family) USB2 EHCI Controller #2 (rev 03)
00:1b.0 Audio device: Intel Corporation 82801H (ICH8 Family) HD Audio Controller (rev 03)
00:1c.0 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 1 (rev 03)
00:1c.1 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 2 (rev 03)
00:1c.3 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 4 (rev 03)
00:1c.4 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 5 (rev 03)
00:1d.0 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #1 (rev 03)
00:1d.1 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #2 (rev 03)
00:1d.2 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #3 (rev 03)
00:1d.7 USB Controller: Intel Corporation 82801H (ICH8 Family) USB2 EHCI Controller #1 (rev 03)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev f3)
00:1f.0 ISA bridge: Intel Corporation 82801HEM (ICH8M) LPC Interface Controller (rev 03)
00:1f.1 IDE interface: Intel Corporation 82801HBM/HEM (ICH8M/ICH8M-E) IDE Controller (rev 03)
00:1f.2 SATA controller: Intel Corporation 82801HBM/HEM (ICH8M/ICH8M-E) SATA AHCI Controller (rev 03)
00:1f.3 SMBus: Intel Corporation 82801H (ICH8 Family) SMBus Controller (rev 03)
01:00.0 VGA compatible controller: nVidia Corporation GeForce 8400M GS (rev a1)
06:00.0 Network controller: Intel Corporation PRO/Wireless 4965 AG or AGN Network Connection (rev 61)
07:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 02)
08:05.0 FireWire (IEEE 1394): O2 Micro, Inc. Firewire (IEEE 1394) (rev 02)
08:05.2 SD Host controller: O2 Micro, Inc. Integrated MMC/SD Controller (rev 02)
08:05.3 Mass storage controller: O2 Micro, Inc. Integrated MS/xD Controller (rev 01)

and lsusb:
Bus 007 Device 001: ID 0000:0000
Bus 006 Device 002: ID 0c45:63e0 Microdia
Bus 006 Device 001: ID 0000:0000
Bus 005 Device 001: ID 0000:0000
Bus 004 Device 001: ID 0000:0000
Bus 003 Device 001: ID 0000:0000
Bus 002 Device 001: ID 0000:0000
Bus 001 Device 001: ID 0000:0000

What I already tested and works: Graphics (after installing the propietary NVIDIA driver using those fancy restricted drivers manager), Webcam, Card reader, WLAN (haven’t tested 802.11n yet, but will do this in the future), Sound, Multimedia buttons.

What didn’t worked: Ethernet card.

Everthing not mentioned hasn’t been tested yet or isn’t worth mentioning.

Fixing the built-in Realtek network card

As the built-in network card currently doesn’t work with the r8169 driver in 2.6.24 kernel, you’ll have to built the r8168 driver provided by Realtek. After some research using ubuntuforums.org ([1] and [2]) and linuxquestions.org, I managed to fix some arising issues. Currently, you have to patch the driver provided by Realtek, because it isn’t working with 2.6.24’s network API. If you haven’t already done so, you have to install the build-essential package. Here’s how it works:

  1. Download the latest driver for Linux kernel 2.6.x from the Realtek homepage.
  2. Unpack it: tar xvf r8168-8.006.00.tar.bz2
  3. Move it to /usr/src: sudo mv r8168-8.006.00 /usr/src/
  4. Download the patch file which energymomentum posted at ubuntuforums.org
  5. Move it to /usr/src/r8168-8.006.00/src: sudo mv r8168-8.006.00.hardy.diff /usr/r8168-8.006.00/src/
  6. cd /usr/src/r8168-8.006.00/src
  7. Apply the patch file: patch < r8168-8.006.00.hardy.diff
  8. cd ..
  9. Build the module: sudo make clean modules
  10. Install the module: sudo make install
  11. Generate module dependencies: sudo depmod -a
  12. Load the module: sudo insmod ./src/r8168.ko
  13. Blacklist the old driver: sudo sh -c 'echo "blacklist r8169" >> /etc/modprobe.d/blacklist-network'
  14. Make changes permanent: sudo update-initramfs -u
  15. Basically that's it, after a reboot you're ethernet card should be working

That's it for now, if new issues arise, I will update this post.

17 Comments

  1. Romain

    I’ve the Dell vostro 1510, and my webcam doesn’t work. I tried the uvcvideo driver and there is a /dev/video0 device but it is unreadable.

    How have you do?

  2. Dennis

    dankeschön dankeschön!!!

    ich benutze zwar archlinux, aber ich hab deine anleitung ein wenig abgeändert und hab nun nach einer verzweifelten langen nacht eindlich mein vostro 1510 zum laufen gebracht!!
    danke danke danke !

  3. ken555

    Thank you for your useful post.
    I have two questions, please.

    Screen Brightness Functions keys work correctly?
    Suspend mode works out-of-the-box?
    bye

  4. gastur

    Thanks a lot for your very useful information about building driver for Ethernet card – because with r8169 it works only randomly. Thank you!

  5. stupent - students @ work
  6. c03

    You don’t have to patch the driver anymore! It works perfectly as they updated their driver to 08

  7. Hello, World! « Exploring Computation
  8. kasjak2000

    Hey guys, i have the same lan-chip in the Vostro 1310. It runs debian etch 4.0r4 (the latest stable) 2.6.18-6-amd64.

    My lan works totally not stable. It works 3 times and then maybe 5 times not.

    The following steps I did:

    I installed gcc, make, binutils, pkg-config via ‘apt-get install’ succesful.

    I downloaded and extracted the r8168-8.008.00.tar.bz2 via ‘tar xfvj r8168-8.008.00.tar.bz2’ and copied it with ‘cp -R r8168-8.008.00 /usr/src’.

    x64etch: /usr/src/r8168-8.008.00# rmmod r8169
    ACPI: PCI interrupt for device 0000:07:00.0 disabled
    x64etch: /usr/src/r8168-8.008.00# make clean modules
    make -C src/ clean
    make[1]: Entering directory ‘/usr/src/r8168-8.008.00/src’
    rm -rf *.o *.ko *~ core* .deb* .*.d .*.cmd *.mod.c *.a *.s .*.flags .tmp_versions Module.symvers Modules.symvers *.order
    make[1]: Leaving directory ‘/usr/src/r8168-8.008.00/src’
    make -C src/ modules
    make[1]: Entering directory ‘/usr/src/r8168-8.008.00/src’
    make -C /lib/modules/2.6.18-6-amd/build SUBDIRS=/usr/src/r8168-8.008.00/src modules
    make: Entering an unknown directory
    make: *** /lib/modules/2.6.18-6-amd/build: No such file or directory. Stop.
    make: Leaving an unknown directory
    make[1]: *** [modules] Error 2
    make[1]: Leaving directory ‘/usr/src/r8168-8.008.00/src’
    make: *** [modules] Error 2
    x64etch: /usr/src/r8168-8.008.00#

    If i look after ‘/lib/modules/2.6.18-6-amd/build’, it’s not present.

    Guys, I dont know what to do and need you help 🙁

    Regards
    kasjak2000

  9. kasjak2000

    Hey guys,

    if i create a directory ‘mkdir /lib/modules/2.6.18-6-amd/build’ and try again, then I get this:

    x64etch: /usr/src/r8168-8.008.00# make clean modules
    make -C src/ clean
    make[1]: Entering directory ‘/usr/src/r8168-8.008.00/src’
    rm -rf *.o *.ko *~ core* .deb* .*.d .*.cmd *.mod.c *.a *.s .*.flags .tmp_versions Module.symvers Modules.symvers *.order
    make[1]: Leaving directory ‘/usr/src/r8168-8.008.00/src’
    make -C src/ modules
    make[1]: Entering directory ‘/usr/src/r8168-8.008.00/src’
    make -C /lib/modules/2.6.18-6-amd/build SUBDIRS=/usr/src/r8168-8.008.00/src modules
    make[2]: Entering directory ‘/lib/modules/2.6.18-6-amd/build’
    make[2]: *** No rule to make target ‘modules’. Stop.
    make[2]: Leaving directory ‘/lib/modules/2.6.18-6-amd/build’
    make[1]: *** [modules] Error 2
    make[1]: Leaving directory ‘/usr/src/r8168-8.008.00/src’
    make: *** [modules] Error 2
    x64etch: /usr/src/r8168-8.008.00#

    Regards
    kasjak2000

  10. kasjak2000

    Hi Martin,

    thanks for the tipp. After istallation of ‘linux-headers-2.6-amd64’ i could continue without any errors till:

    x64etch: /usr/src/r8168-8.008.00# insmod ./src/r8168.ko
    r8168 Gigabit Ethernet driver 8.008.00-NAPI loaded
    ACPI: PCI Interrupt 0000:07:00.0[A] -> GSI 16 (level, low) -> IRQ 177
    PCI: cache line size of 32 is not supported by device 0000:07:00.0
    ACPI: PCI interrupt for device 0000:07:00.0 disabled
    r8168: probe of 0000:07:00.0 failed with error -22
    x64etch: /usr/src/r8168-8.008.00# lsmod | grep r8
    r8168 40592 0
    x64etch: /usr/src/r8168-8.008.00#

    but I continued just till end and after a reboot the nic is working 🙂

    But the error on enter ‘insmod ./src/r8168.ko’ makes me crabby 🙁

    Gruß und Danke
    kasjak2000

  11. kasjak2000

    Hi MArtin,

    forget the error in my last post plaese. I played back my backup for /dev/sda1 and i tried the game again, and voilla, it works without any errors 🙂

    But at the first I did the ‘rmmod r8169’. Maybe it was not needed?

    Anyway, thank you for help mate 🙂

    Gruß und Danke
    kasjak2000

  12. kasjak2000

    Hi Martin,

    here we go again 🙂

    I have the same cpu like you. Did you try to undervolt your cpu with PHC allready?

    I don’t know, but maybe you can help me.

    I have here a Vostro 1310 with a T5870 and Ubuntu 8.04.1 2.6.24-19-generic x86_64 GNU/Linux (I know, its debian for dummies :-))

    I created with this wiki:

    _http://wiki.ubuntuusers.de/Prozessorspannung_absenken

    and phc patch 0.3.1 a acpi-cpufreq.ko-modul, copied it to the ‘/lib/modules/2.6.24-19-generic/kernel/arch/x86/kernel/cpu/cpufreq/’

    After restart:

    Code begin:

    root@x64ubuntu8041:~# cat /sys/devices/system/cpu/cpu0/cpufreq/phc_controls
    11:45 10:37 8:30 6:23 136:15
    root@x64ubuntu8041:~# cat /sys/devices/system/cpu/cpu1/cpufreq/phc_controls
    11:45 10:37 8:30 6:23 136:15
    root@x64ubuntu8041:~#

    root@x64ubuntu8041:~# cat /sys/devices/system/cpu/cpu0/cpufreq/phc_fids
    11 10 8 6 136
    root@x64ubuntu8041:~# cat /sys/devices/system/cpu/cpu1/cpufreq/phc_fids
    11 10 8 6 136
    root@x64ubuntu8041:~#

    Code end.

    1) Why 136?

    If I try to echo (wiht tee) the new voltages into the phc_controls with 6 it doesn’t work, but with 136.

    2) If I do this, then I get 800000. It must be 600000, right?

    Code begin:

    root@x64ubuntu8041:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
    800000
    root@x64ubuntu8041:~# cat /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq
    800000
    root@x64ubuntu8041:~#

    root@x64ubuntu8041:~# cat /sys/devices/system/cpu/cpu1/cpufreq/cpuinfo_min_freq
    800000
    root@x64ubuntu8041:~# cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq
    800000
    root@x64ubuntu8041:~#

    Code end.

    If I try to set 600000 (with echo and tee) to scaling_min_freq, I don’t get any errors, but it doesn’t set it

    But I think the multi 6 works in 1200mHz (6×200), because i can set 1200mHz.

    The question is, how to set 60000 as min frequenz?

    In the windose i can set the 600mHz (6×100) with rmclock successful and in linux 800mHz as min frequenz only 🙁

    3) And this isn’t right too:

    Code begin:

    root@x64ubuntu8041:~# cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq
    2001000
    root@x64ubuntu8041:~# cat /sys/devices/system/cpu/cpu1/cpufreq/cpuinfo_max_freq
    2001000
    root@x64ubuntu8041:~# cat /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq
    2001000
    root@x64ubuntu8041:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
    2001000
    root@x64ubuntu8041:~#

    Code end.

    The highest multi is 11, then it must be 11×200=2200mHz, right?

    So, how to set the cpu to 600mHz and 2200mHz?

    Thank you very much
    kasjak2000

  13. shredder12

    hey martin, i tried doing as you said.. but i got an error while patching the file and i was told that it was probably because i was not using the source file with which the patchfile was generated.. you can have a look at the r8168.h file… http://paste.ubuntu.com/95681/ and compare it with the patch file you have mentioned.. could you mention some other patchfile which is compatible with the current source..

  14. Martin Henze

    @shredder12: As c03 stated earlier, it shouldn’t be necessary to use the patch anymore. Furthermore my ethernet card worked without any problem since Ubuntu 8.10.

  15. comdown

    Hi martin,

    I use Xubuntu 8.04.1 and get the following error at step 9:

    > sudo make clean modules
    make -C src/ clean
    make[1]: Betrete Verzeichnis ‘/usr/src/r8168-8.008.00/src’
    rm -rf *.o *.ko *~ core* .dep* .*.d .*.cmd *.mod.c *.a *.s .*.flags .tmp_versions Module.symvers Modules.symvers *.order
    make[1]: Verlasse Verzeichnis ‘/usr/src/r8168-8.008.00/src’
    make -C src/ modules
    make[1]: Betrete Verzeichnis ‘/usr/src/r8168-8.008.00/src’
    make -C /lib/modules/2.6.24-19-generic/build SUBDIRS=/src modules
    make[2]: Betrete Verzeichnis ‘/usr/src/linux-headers-2.6.24-19-generic’
    scripts/Makefile.build:41: /src/Makefile: No such file or directory
    make[3]: *** Keine Regel, um »/src/Makefile« zu erstellen. Schluss.
    make[2]: *** [_module_/src] Fehler 2
    make[2]: Verlasse Verzeichnis ‘/usr/src/linux-headers-2.6.24-19-generic’
    make[1]: *** [modules] Fehler 2
    make[1]: Verlasse Verzeichnis ‘/usr/src/r8168-8.008.00/src’
    make: *** [modules] Fehler 2

    I followed all steps except 7 and crashed at 9. I can’t see the error. Please help me.

Comments are closed.