Intro
Kandungan
Feedback


Masalah modem dalaman dengan LINUX.

Konfigurasi modem PCI atau ISA Pnp ( Cara automatik ) SuSE

*Perhatian!!!bagi distro lain sila gunakan cara manual atau anda boleh cuba edit skrip dibawah ini sendiri.

Kernel: Versi 2.2.x keatas

Masalah: modem dalaman tidak dapat dikesan

Sebab: alamat I/O port bersiri dalam Linux menggunakan nilai default yang biasanya digunakan oleh kad ISA bukan PnP.Ini bagi mengelakkan konflik berlaku. Bagi kad PCI biasanya maklumat terdapat pada BIOS kad tersebut.

Penyelesaian: Terdapat 2 cara untuk menyelesaikannya iaitu cara automatik atau manual

Cara automatik:

1. Salin skrip pnpmodemconf yang terdapat dalam disket utility dan letakkan letakkan pada direktori /usr/sbin

2. Salin skrip pnpmodemconf.en dan pnpmodemconf.my dalam direktori usr/sbin

3.Login sebagai root

4.Laksanakan skrip sh /usr/sbin/pnpmodemconf

5.Boleh dilaksanakan dalam mod senyap sh /usr/sbin/pnpmodemconf -s

6.Sekiranya berjaya boleh boleh cuba dail menggunakan wvdial

***Eksklusif untuk pengguna Motorolla speakerphone modem sm56

Pengenalan

Modem Motorolla sm56 adalah modem dalaman yang telah diuji dan didapati berfungsi pada sistem SuSE dan Mandrake serta distro lain. Semasa mula – mula memasang driver ini didapati terdapat masalah untuk menggunakan drivernya. Driver boleh di pindahterima daripada laman web motorolla.

Selepas itu perlu melaksanakan arahan seperti berikut, bagaimanapun terdapat ralat:

[root@localhost darwin]# insmod sm56
Using /lib/modules/2.4.18-6mdk/kernel/drivers/char/sm56
Warning: loading /lib/modules/2.4.48-6mdk/kernel/drivers/char/sm56 will taint the kernel: no license
Segmentation fault
[root@localhost darwin]#

Untuk mendapat lebih maklumat sila taip:

[root@localhost darwin]# dmesg

dan maklumat berikut akan terpapar:

kernel BUG at slab.c:1099!
invalid operand: 0000
CPU: 0
EIP: 0010:[<c012b4a6>] Tainted: P
EFLAGS: 00010282
eax: 0000001b ebx: d3fdc2f0 ecx: 00000001 edx: 00001799
esi: d3fdc2f0 edi: 00000007 ebp: d3fdc2f0 esp: cf8f5e1c
ds: 0018 es: 0018 ss: 0018
Process insmod (pid: 1401, stackpage=cf8f5000)
Stack: c02314e3 0000044b 00000001 c012da15 c02d6f90 00001030 d3fd9800 c0146590
00000282 d3fdc2f0 00000202 d3fdc2f8 d3fdc2f0 c012b84c d3fdc2f0 00000007
00000001 c012da15 c02d6f90 00000000 00000064 00000000 00000000 cf8f5e98
Call Trace: [<c012da15>] [<c0146590>] [<c012b84c>] [<c012da15>] [<d6981060>] [<c021074a>] [<d69c7d34>] [<d69c7a63>] [<c012da15>] [<c01174f5>] [<d6981060>] [<c0106f4b>]
Code: 0f 0b 5a 59 f7 c7 00 10 00 00 0f 85 d0 01 00 00 a1 c8 d3 33

Perhatikan pada kernel BUG at slab.c:1099!

Kita akan cuba baikinya dengan cara mengedit kod sumber(source code) kernel pada fail slab.c pada line 1099.

Taip arahan ini

[root@localhost darwin]# locate slab.c
/usr/src/linux-2.4.18-6mdk/drivers/media/radio/radio-aimslab.c
/usr/src/linux-2.4.18-6mdk/mm/slab.c
[root@localhost darwin]#

Kita hanya berminat pada fail kedua. Edit fail dengn editor kesukaan anda dan lihat pada line 1099.

static int kmem_cache_grow (kmem_cache_t * cachep, int flags)
{
slab_t *slabp;
struct page *page;
void *objp;
size_t offset;
unsigned int i, local_flags;
unsigned long ctor_flags;
unsigned long save_flags;

/* Be lazy and only check for valid flags here,
* keeping it out of the critical path in kmem_cache_alloc().
*/

if (flags & ~(SLAB_DMA|SLAB_LEVEL_MASK|SLAB_NO_GROW))
BUG();

if (flags & SLAB_NO_GROW)
return 0;

Perhatikan perkataan yang berhuruf tebal ini. Inilah yang menghalang kita dari memasang driver kita. Hanya komenkan sahaja seperti dibawah ini.


/*
*if (flags & ~(SLAB_DMA|SLAB_LEVEL_MASK|SLAB_NO_GROW))
*BUG();
*/

Kemudian kompil kernel anda dengan arahan make oldconfig.