Linux on Laptops |
![]() |
Home | New | Models | Components | Discussion | Submit |
Last updated: 2006-05-12
General Hardware Specifications of Samsung M40 XWM 725
Hardware Components | Status under Linux | Notes |
Intel Pentium M Centrino 1.6 GHz | Works | Several patches in kernel are required in order to use this laptop as it should (ACPI, speedstep) |
17 WXGA TFT (1440x900) | Works | Specific modeline to use is specified below |
nVidia GeForce FX Go 5200 | Works | nVidia proprietary driver 1.0-6111 with Xorg 6.8 (i couldn't manage to use the later versions of the driver and Xorg) |
CDR/CDRW writer | Works | No special procedure required during installation |
Hotkeys | Works | For kernels 2.6.x, two keycodes have to be re-assigned as explained below No special procedure required during installation for kernels 2.4.x |
Intel 82801 AC'97 Audio Controller | Works | ALSA driver snd-intel8x0 and snd-intel8x0m, or OSS driver i810_audio |
Ethernet network Broadcom controller | Works | No special procedure required if using kernels 2.4.2x and 2.6.x: driver b44 is directly available in kernel Broadcom driver bcm4400 is available on the official website for old kernels 2.4.x |
Intel PRO/Wireless 2200BG | Works | Debian package ipw2200-source provides sources to build wireless adapter driver ; after compilation, ipw2200 firmware needs to be downloaded and copied to /usr/lib/hotplug/firmware/ in order to be automatically used when module is loaded |
Touchpad | Works | psmouse module has to be loaded with option proto=imps to have scroll aptitude working |
Modem 56k internal modem | Not tested | This internal 56k modem would be supported by slmodem driver provided by SmartLink |
Sony MemoryStick card reader | Doesn't work | No suitable driver |
This laptop is operating under kernel version 2.6.8
Steps to override buggy DSDT with a fixed one are described in this tutorial. Here's the DSDT definition file to be added in directory include/acpi/ in kernel tree. Then file drivers/acpi/osl.c has to be patched:
* */ +#include <acpi/dsdt_samsungm40.h> #include <linux/config.h> #include <linux/kernel.h> #include <linux/slab.h>
and:
if (!existing_table || !new_table) return AE_BAD_PARAMETER; - *new_table = NULL; + *new_table = (strncmp(existing_table->signature, DSDT_SIG, 4)) ? NULL \ + : (struct acpi_table_header *) AmlCode; return AE_OK; }
speedstep-centrino module won't be loadable ("No such device") unless kernel is patched. This report explains how to fix this issue. File arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c has to be changed in this way:
static const struct cpu_id cpu_id_dothan_a1 = { .x86_vendor = X86_VENDOR_INTEL, .x86 = 6, .x86_model = 13, - .x86_mask = 1, + .x86_mask = 6, };
According to this report, new 6 value stands for stepping value provided by command cat /proc/cpuinfo
Another problem is that CPU produces a weird noise when running on its battery and decreasing speed. There's a patch for this in the kernel bug tracker. It consists of changing HZ value in file include/asm-i386/param.h:
#ifdef __KERNEL__ -# define HZ 1000 /* Internal kernel timer frequency */ +# define HZ 100 /* Internal kernel timer frequency */ # define USER_HZ 100 /* .. some user interfaces are in "ticks" */ # define CLOCKS_PER_SEC (USER_HZ) /* like times() */ #endif
This modeline can be put in Xorg configuration:
Section "Monitor" Identifier "Generic Monitor" HorizSync 30-64 VertRefresh 50-100 Option "DPMS" ModeLine "1440x900@60" 97.54 1440 1472 1840 1872 900 919 927 946 EndSection
On kernel 2.6.x, some keycodes have to be re-assigned (as explained here). I added a script in init.d/ to re-assign keycodes 74 and 75 to 200 and 218 (these new codes can be used since they don't match any key being already used in include/linux/input.h):
#! /bin/sh set -e case "$1" in start) echo -n "Setting key codes... " /usr/bin/setkeycodes 74 200 /usr/bin/setkeycodes 75 218 echo "done." ;; *) echo "Usage: /etc/init.d/sethotkeys {start}" >&2 exit 1 ;; esac exit 0
Then you can use following xmodmap configuration file to get new signals' codes captured by xev:
keycode 128 = XF86Mail keycode 194 = XF86WWW keycode 168 = XF86AudioMedia keycode 160 = XF86AudioMute keycode 176 = XF86AudioRaiseVolume keycode 174 = XF86AudioLowerVolume
0000:00:00.0 Host bridge: Intel Corp. 82855PM Processor to I/O Controller (rev 03) 0000:00:01.0 PCI bridge: Intel Corp. 82855PM Processor to AGP Controller (rev 03) 0000:00:1d.0 USB Controller: Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 01) 0000:00:1d.1 USB Controller: Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 01) 0000:00:1d.2 USB Controller: Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 01) 0000:00:1d.7 USB Controller: Intel Corp. 82801DB/DBM (ICH4/ICH4-M) USB 2.0 EHCI Controller (rev 01) 0000:00:1e.0 PCI bridge: Intel Corp. 82801 PCI Bridge (rev 81) 0000:00:1f.0 ISA bridge: Intel Corp. 82801DBM LPC Interface Controller (rev 01) 0000:00:1f.1 IDE interface: Intel Corp. 82801DBM (ICH4) Ultra ATA Storage Controller (rev 01) 0000:00:1f.3 SMBus: Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (rev 01) 0000:00:1f.5 Multimedia audio controller: Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 01) 0000:00:1f.6 Modem: Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (rev 01) 0000:01:00.0 VGA compatible controller: nVidia Corporation NV34M [GeForce FX Go 5200] (rev a1) 0000:02:03.0 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev ac) 0000:02:03.1 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev ac) 0000:02:03.2 FireWire (IEEE 1394): Ricoh Co Ltd R5C552 IEEE 1394 Controller (rev 04) 0000:02:05.0 Ethernet controller: Broadcom Corporation BCM4401 100Base-T (rev 01) 0000:02:07.0 Network controller: Intel Corp. PRO/Wireless 2200BG (rev 05)