debian: ติดตั้งฮาร์ดแวร์

บันทึกการติดตั้งฮาร์ดแวร์

ติดตั้งเครื่องพิมพ์ให้เครือข่าย

# aptitude install cupsys cupsys-bsd \
cupsys-client cupsys-common cupsys-dbg \
cupsys-driver-gimpprint \
cupsys-driver-gutenprint

Do you want to set up the BSD lpd compatibility server?
<<<--- No

ปรับตั้ง cupsys
# dpkg-reconfigure cupsys
Do you want CUPS to print unknown jobs as raw jobs?
<<<--- Yes
Printer communication backends:
<<<--- [DEFAULT]

ปรับตั้งให้สามารถใช้งานผ่านเว็บ ใช้พอร์ต 631 แบบไม่ต้องล๊อกอิน
# vi /etc/cups/cupsd.conf

...
#--- Listen localhost:631
Listen *:631
...
#BrowseAllow @LOCAL
BrowseAllow all
...

<Location />
  Order allow,deny
# Allow localhost
  Allow all
</Location>

<Location /admin>
#  Encryption Required
  AuthType None
  Order allow,deny
# Allow localhost
  Allow all
</Location>

<Location /admin/conf>
  AuthType None
  Require user @SYSTEM
  Order allow,deny
# Allow localhost
  Allow all
</Location>
...

# /etc/init.d/cupsys restart

สามารถใช้งานผ่านบราวเซอร์ในเครือข่ายได้แล้ว
เช่น http://192.168.1.5:631/

debian: บันทึกเครื่องพิมพ์อิงก์เจ็ต epson

สำหรับเครื่องพิมพ์ในลินุกซ์ เราเรียกใช้จาก cups ผ่านบราวเซอร์ที่พอร์ต 631 ซึ่งก็ใช้งานสะดวกพอควร
แต่ถ้าหากว่าเป็นเครื่องพิมพ์อิงก์เจ็ตที่ต้องมีการตรวจดูระดับหมึกด้วย การใช้งานผ่าน cups จะดูระดับหมึกไม่ได้

สำหรับเครื่องพิมพ์ Epson เดเบียนจะมีแพกเกจที่ทำหน้าที่ดังกล่าว ชื่อ mtink
ติดตั้งดังนี้

ติดตั้งแพกเกจ
$ sudo aptitude install mtink

แก้ไขให้เราสามารถใช้งานเครื่องพิมพ์ได้ โดยปรับตั้งให้เราไปอยู่ในกรุ๊ปของเครื่องพิมพ์ คือ lp
สมมุติว่าเราชื่อ user1
$ sudo usermod -G lp user1
หรือถ้ามีชื่อผู้ใช้หลายคน อาจแก้ไขที่ไฟล์ /etc/group โดยตรง
$ sudo vi /etc/group

...
lp:x:7:cupsys,user1
...

เรียกใช้งานด้วยคำสั่ง mtink

  • อาจต้องล๊อกเอาต์ออกจากระบบหนึ่งครั้ง การปรับตั้งจึงจะสมบูรณ์
  • การตอบสนองของโปรแกรม ค่อนข้างช้า แต่ก็ใช้งานได้ราบรื่นดี
Topic: 

debian: สร้างเครื่องพิมพ์ socket ให้ cups

มีปัญหาเรื่อง cups พิมพ์ผ่านเครือข่ายไม่ได้ เป็นอยู่เครื่องเดียว ไม่ทราบว่าเป็นเพราะอะไร

แก้ชั่วคราวด้วยการสร้างซอคเก็ตสำหรับรับงานพิมพ์ผ่านเครือข่าย (เผื่อเอาไว้เวลาอัปเกรดรุ่นบนเดเบียนแล้ว cups ชอบตายด้วย)

เอาความรู้จาก debian: ปรับปรุง HylaFax Client โดยใช้ perl สร้างเครื่องพิมพ์เทียมขึ้นมา โดย

ที่เครื่องปรินต์เซิร์ฟเวอร์
สร้างไฟล์ perl รับงานพิมพ์ผ่าน socket
สมมุติว่าเครื่องพิมพ์ชื่อ brother ติดตั้งไดร์ฟเวอร์ไว้เรียบร้อยแล้ว
เราจะสร้างสคริปต์สำหรับรับงานพิมพ์ผ่านทาง socket หมายเลข 5692
# vi /usr/local/bin/brother-print

#!/usr/bin/perl

# Daniel E. Markle 
# 20031114 Revision 0.1

# This program starts up a daemon which will watch for a postscript file
#  coming in from CUPS, then launch pyla to send it as a fax.
# Use it with the socket://localhost:5691 URL in cups.

# Issues:
#    -security, make sure only localhost can see this port, it allows anyone
#      who can stream data to this port to popup pyla on your desktop
#    -must be ran as the user or the window may not pop up at the right
#      place, if at all

# ***CONFIGURE ME HERE

# Port to listen on, use socket://localhost: in cups
my $MY_PORT = 5692;

# Printer name
my $PRINTER = "brother";

# Temporary file storage, this is a file not a folder
my $TMP_FILE_NAME = "/tmp/brotherprint";

# ***END CONFIGURATION

# ----- You shouldn't need to touch anything beyond this point -----

use IO::Socket::INET;

# check to make sure we can use the temp file
open ( TMPFILE, ">", $TMP_FILE_NAME )
   or die "Can not open temp file $TMP_FILE_NAME, " .
   "check to make sure it is not owned by another user";
close ( TMPFILE );

my $data;
my $server = IO::Socket::INET->new (
   LocalPort => $MY_PORT,
   Type => SOCK_STREAM,
   Reuse => 1,
   Listen => 1
   ) or die "Could not start server process";

while ( my $job = $server->accept() ) {
   open ( TMPFILE, ">", $TMP_FILE_NAME );
   while ( <$job> ) {
      print TMPFILE $_;
      }
   close ( TMPFILE );
   close $job;
   `lpr -P "$PRINTER" "$TMP_FILE_NAME"`;
   unlink "$TMP_FILE_NAME";
   }

สร้างสคริปต์สำหรับเปิดปิดการใช้งาน
เอาไว้ที่ /etc/init.d/ (ไม่ค่อยดีเท่าไหร่ ควรเอาไว้ที่อื่นแล้วสร้างลิงก์มาจะดีกว่า)
# vi /etc/init.d/brother-printd

#!/bin/sh

PATH=/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/local/bin/brother-print
NAME=brother-print
DESC="Pseudo printer for Brother"

test -x $DAEMON || exit 0

case "$1" in
        start)
                echo -n "Starting $DESC: "

                start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \
                        --chuid $USER --background --make-pidfile \
                        --exec $DAEMON -- $DAEMON_OPTS

                echo "$NAME."
                ;;

        stop)
                echo -n "Stopping $DESC: "

                start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \
                        --oknodo

                echo "$NAME."
                ;;

        restart|force-reload)
                echo -n "Restarting $DESC: "

                start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \
                        --oknodo

                sleep 1

                                                                                    
                start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \
                        --chuid $USER --background --make-pidfile \
                        --exec $DAEMON -- $DAEMON_OPTS

                echo "$NAME."
                ;;

        *)
                N=/etc/init.d/$NAME
                echo "Usage: $N {start|stop|restart|force-reload}" >&2
                exit 1
                ;;
esac

exit 0

สั่งเปิดใช้งานเมื่อเริ่มเปิดเครื่อง และสั่งเปิดใช้งานเลย
# update-rc.d brother-printd defaults
# /etc/init.d/brother-printd start

ที่เครื่องลูกข่าย
เปิดใช้งานด้วยบราวเซอร์ http://localhost:631
ให้ตั้งเครื่องพิมพ์ไปที่ Device URI: socket://server:5692
โดยใช้ไดร์ฟเวอร์เป็น Generic Postscript Printer

หรือสั่งด้วยบรรทัดคำสั่งว่า
$ sudo lpadmin -p brother -E -v socket://server:5692

เสร็จเรียบร้อยแล้ว สามารถพิมพ์ผ่านเครือข่ายได้แล้ว

debian: แก้ปัญหา cups

ปกติเวลาจะติดตั้งเครื่องพิมพ์เครือข่าย จะใช้การติดตั้งผ่านเว็บ ทางพอร์ต 631
แต่ปัญหาคือ สำหรับเครื่องพิมพ์ที่ต่ออยู่กับเครื่องวินโดวส์ จะไม่สามารถติดตั้งผ่านเว็บแบบนั้นได้
ต้องติดตั้งผ่าน gnome-cups-manager คือ System -> Administration -> Printing

ผมลองติดตั้งเครื่องพิมพ์ Brother MFC-7420
พบว่าต้องติดตั้งไดร์เวอร์สองตัวคือ brmfc7420lpr-2.0.1-1.i386.deb และ cupswrapperMFC7420-2.0.1-1.i386.deb
เมื่อติดตั้งเสร็จจึงเรียก gnome-cups-manager อีกทีนึง แต่พอติดตั้งเสร็จแล้ว เขาไม่ยอมบันทึกค่าให้ ลองย้อนมาดูล๊อกไฟล์ที่ /var/log/cups/error_log จึงทราบว่าเขาไม่ยอมคัดลอกไฟล์ MFC7420.ppd ไปยังไดเรคทอรี่ /usr/share/ppd
ก็เลยคัดลอกไฟล์ด้วยมือ
$ sudo cp /usr/share/cups/model/MFC7420.ppd /usr/share/ppd

ก็จะสามารถใช้งานเครื่องพิมพ์เครือข่ายวินโดวส์ได้แล้ว

update: แก้ปัญหาพิมพ์ไปวินโดวส์ไม่ได้

บางครั้งเวลาอัปเกรดแพกเกจ อาจเกิดปัญหาพิมพ์ไปยังเครื่องพิมพ์วินโดวส์ไม่ได้
แก้ปัญหาด้วยการ ถอดและลงไดรฟเวอร์ปรินเตอร์ใหม่

update2: 50-08-20 - แก้ปัญหาพิมพ์ผ่านเครือข่ายไม่ออก

บางครั้งเวลาเลือกเปลี่ยนไดรฟเวอร์เครื่องพิมพ์ให้เหมาะสมกับเครื่องพิมพ์นั้น ๆ เมื่อเปลี่ยนแล้วพิมพ์ผ่านเครือข่ายไม่ออก
ดู /var/log/cups/error_log แล้วแก้ปัญหาโดยต้องเปลี่ยนการอนุญาตใช้ไฟล์ของ cache ของ cups
$ sudo chmod 660 /var/cache/cups/*
$ sudo chown root:lp /var/cache/cups/*

โดยให้เราเข้าไปเป็นสมาชิกของกลุ่ม lp
$ sudo usermod -G lp $USER
(แต่ผมใช้วิธีเข้าไปแก้ไฟล์ /etc/group ตรง ๆ )

update3: 50-09-06 - การพิมพ์ไปยังเครื่องวินโดวส์

การพิมพ์ไปเครื่องวินโดวส์
การพิมพ์ไปเครื่องวินโดวส์ อาจต้องปรับแก้ /etc/cups/mime.convs ลบคอมเมนต์บรรทัด raw filter ออก
$ sudo vi /etc/cups/mime.convs
...
application/octet-stream        application/vnd.cups-raw        0       -
...

(ลองบน sid เครื่องนึงต้องแก้ อีกเครื่องนึงไม่ต้องแก้ ยังงงอยู่ครับ)
เอามาจาก: Debian and Windows Shared Printing mini-HOWTO

update4: 51-01-11 - ปัญหา Upgrade Required

แก้ปัญหา Upgrade Required
เกิดเวลาเราปรับตั้งเครื่องพิมพ์ผ่านบราวเซอร์
ปรับแก้ที่ /etc/cups/cupsd.conf โดยเติม
DefaultEncryption Never

แล้วสั่งเริ่มใหม่
$ /etc/init.d/cupsd.conf restart
เอามาจาก CUPS: 426 - Upgrade Required

update5: 51-04-22 - ปัญหาหาไฟล์ ppd ไม่พบ

ถ้าติดตั้งใหม่แล้วโดนรายงานว่า หาไฟล์ /usr/share/cups/model/MFC7420.ppd ไม่พบ
ให้สร้างไฟล์เปล่าขึ้นมา แล้วติดตั้งใหม่ เขาจะสร้างไฟล์ใหม่ขึ้นมาแทน
# mkdir -p /usr/share/cups/model
# touch /usr/share/cups.model/MFC7420.ppd
# aptitude reinstall cupwrappermfc7420
# /etc/init.d/cupsys restart

update6: 55-07-08 - ตั้งค่าความละเอียดและขนาดกระดาษ

  • ส่วนบุคคล แก้ที่ไฟล์ ~/.cups/lpoptions
  • ระบบส่วนรวม แก้ที่ไฟล์ /etc/cups/lpoptions

สมมุติว่าจะให้พิมพ์ไปเครื่องพิมพ์ brother โดยตั้งความละเอียดที่ 600dpi และขนาดกระดาษ A4

Dest brother Resolution=600dpi PageSize=A4

debian: แก้ปัญหางานพิมพ์ "socket failed"

จากเรื่อง debian: สร้างเครื่องพิมพ์ socket ให้ cups
พบว่าหลังปรับรุ่น cups เป็นรุ่น 1.4.4-1 แล้วมีปัญหาว่าเครื่องพิมพ์แบบ socket พิมพ์ไม่ออก

ค้นพบว่า มีบั๊กอยู่ตรงไดเรคทอรี่ backend โดยให้เพิ่มข้ออนุญาตในการอ่านและรัน

$ sudo chmod go+rx /usr/lib/cups/backend

ที่มา: Bug#586324: Printing fails with "/usr/lib/cups/backend/socket failed" fixed for me

Topic: 

debian: บันทึกติดตั้งโมเด็ม HSF

เมื่อคืนไฟฟ้าดับ ทำให้เครื่องต้องปิดตัวเอง ก่อนหน้านั้นติดตั้งเคอร์เนลใหม่ไว้ แต่ยังไม่ได้รีบูตเครื่อง พอไฟฟ้ามา เปิดเครื่องใหม่เลยกลายเป็นเคอร์เนลใหม่ ทำให้ต้องมาติดตั้งไดรฟ์เวอร์อุปกรณ์ใหม่

ลองตรวจดูปรากฎว่าไม่เคยบันทึกเกี่ยวกับโมเด็ม HSF เลย จึงขอบันทึกไว้แบบหยาบ ๆ สักนิดนึง

โมเด็มที่เป็นแบบติดตั้งภายใน (Internal) ส่วนใหญ่จะใช้กับลินุกซ์ไม่ค่อยได้ เพราะไม่ใช่โมเด็มแท้ ๆ คือต้องใช้ซอฟต์แวร์คือไดรฟ์เวอร์ช่วย
แต่ถ้าเป็นโมเด็มที่ใช้ชิปเซตของ Conexant จะสามารถติดตั้งได้โดยใช้ไดรฟ์เวอร์ที่เขาขายผ่าน Linuxant ซึ่งราคาไดรฟ์เวอร์แพงกว่าค่าโมเด็ม ก็จะสามารถติดตั้งใช้งานได้
โมเด็มแบบนี้มีข้อดีคือทนทานต่อฟ้าร้องฟ้าผ่าได้ดีกว่าโมเด็มแท้ ๆ
สามารถตรวจดูฮาร์ดแวร์ได้จากคำสั่ง
# lspci | grep Conexant
ถ้ามีปรากฎขึ้นมา ก็แสดงว่าโมเด็มเราใช้ชิปเซตของ Conexant

ใช้เดเบียน Etch เคอร์เนลรุ่น 2.6.18-4
เริ่มด้วยการติดตั้งเคอร์เนลเฮดเดอร์ ผมใช้ซีพียูตระกูล AMD-k7
# aptitude install linux-headers-2.6.18-4-k7

สร้างซอฟต์ลิงก์ไว้รอ
# cd /usr/src
# ln -sf linux-headers-2.6.18-4-k7 linux

ไปดาวน์โหลดไฟล์ติดตั้งจากบริษัท
# wget http://www.linuxant.com/drivers/hsf/full/archive/cnxtinstall.run

สั่งรัน
# ./cnxinstall.run
# hsfconfig

ตอบคำถามตามค่าปริยาย ยกเว้นข้อมูลของเรา และตัวเลข License

เสร็จแล้ว สามารถใช้งานผ่านดีไวซ์ /dev/ttySHSF0-9

debian: ติดตั้งโมเด็ม Aztech UM-9800

ติดตั้งโมเด็ม Aztech UM-9800
โมเด็มตัวนี้ใช้ชิปเซ็ตของ SmartLink (sl-modem) โมเด็มตัวอื่นที่ใช้ชิปเซ็ตเดียวกันก็สามารถใช้วิธีเดียวกันได้ครับ
สมัยก่อนไดรฟเวอร์ตัวนี้มีปัญหามาก ว่าติดตั้งแล้วมักจะมีปัญหากับเคอร์เนล ไม่ว่าจะเลือกใช้ไดรฟเวอร์ของโมเด็มเองหรือของที่เขาเขียนสำหรับลินุกซ์โดยเฉพาะก็ตาม
แต่ปัจจุบันมีแพกเกจ module-assistant ทำให้การติดตั้งง่ายขึ้นมาก

กับ Etch ผมทดสอบกับเคอร์เนล 2.6.17 ไม่ผ่าน แต่กับเคอร์เนลปัจจุบันคือ 2.6.18 ผ่านเรียบร้อยครับ

เริ่มด้วยติดตั้งแพกเกจ module-assistant
# aptitude install module-assistant

เรียกใช้ module-assistant ให้ติดตั้งโมดูล sl-modem โดยอัตโนมัติ
# m-a a-i sl-modem

เนื่องจากโมเด็มตัวนี้ไม่ใช่โมเด็มจริง ๆ (เป็นคล้าย ๆ WinModem) จึงต้องมีโปรแกรมทำงานเบื้องหลังเป็น daemon อีกทีนึง เราจึงต้องติดตั้งแพกเกจตัวนี้ด้วย
# aptitude install sl-modem-daemon

ปรับแต่ง - อาจไม่จำเป็นก็ได้
เมื่อเริ่มต้นรัน sl-modem-daemon โปรแกรมจะทำการตรวจสอบโดยอัตโนมัติว่า ฮาร์ดแวร์ของเราเป็น pci หรือ usb
ถ้าเป็น pci โปรแกรมจะเลือกใช้เคอร์เนลโมดูล slamr
ถ้าเป็น usb โปรแกรมจะเลือกใช้เคอร์เนลโมดูล slusb
ฮาร์ดแวร์ของเราเป็น usb เวลาโปรแกรมตรวจสอบอัตโนมัติ เขาจะขึ้นมารายงานผลว่าไม่สามารถแทรกโมดูล slamr ได้ ทำให้รำคาญพอควร
ผมเลยเลือกที่จะไม่ให้เขาตรวจสอบอัตโนมัติ แต่จะระบุไปเลยว่าของเราต้องใช้เคอร์เนลโมดูล slusb
# vi /etc/default/sl-modem-daemon

...
#SLMODEMD_DEVICE=auto
SLMODEMD_DEVICE=slusb0
SLMODEMD_COUNTRY=THAILAND
...

สั่งเริ่มรัน daemon ใหม่
# /etc/init.d/sl-modem-daemon restart

ถ้าไม่มีอะไรผิดพลาด จะเกิดดีไวซ์ /dev/ttySL0 ขึ้น เราสามารถเรียกใช้โมเด็มได้จากลิงก์นี้ครับ

เสร็จแล้วครับ :)

ข้อมูลเพิ่มเติม

  • 51-12-09 บนเดเบียน lenny เคอร์เนลรุ่น 2.6.26-1-486 แพกเกจรุ่น 2.9.9d+e-pre2-12+2 : ติดตั้งผ่าน แต่ใช้งานแฟกซ์ไม่ได้ dmesg ขึ้น error ว่า EIP is at down+0x19/0x39

debian: ติดตั้ง slmodem จากซอร์ส

จากครั้งก่อน หลังจากติดตั้งเสร็จแล้ว ผมได้ลองอัปเกรดโดยใช้คำสั่ง aptitude dist-upgrade
ปรากฎว่าโมดูล sl-modem ไม่ทำงาน (ไม่รายงานข้อผิดพลาด แต่ไม่ทำงาน)
เลยทดลองถอดออกและติดตั้งจากซอร์สใหม่
ขั้นตอนมีดังนี้

ถอดโมดูลเก่าก่อน
# dpkg -r sl-modem-modules-2.6.18-3-k7

ถอดแพกเกจ sl-modem-daemon ด้วย
# aptitude purge sl-modem-daemon

ดาวน์โหลดซอร์สจาก linmodem - Smartlink ผมเลือกตัวใหม่สุด รวมทั้งต้องดาวน์โหลดซอร์สของ ungrab-winmodem ด้วย
# cd /usr/src
# wget http://linmodems.technion.ac.il/packages/smartlink/ungrab-winmodem.tar.gz
# tar xfz ungrab-winmodem.tar.gz
# cd ungrab-winmodem
# make && make install
# cd ..
# wget http://linmodems.technion.ac.il/packages/smartlink/slmodem-2.9.11-20061021.tar.gz
# tar xfz slmodem-2.9.11-20061021.tar.gz
# cd slmodem-2.9.11-20061021
# make && make install
# mknod -m 600 /dev/slamr0 c 242 0
# mknod -m 600 /dev/slusb0 c 243 0
# modprobe ungrab-winmodem
# modprobe slusb

ปรับ inittab
# vi /etc/iniitab

...
S3:2345:once:/bin/mknod -m 600 /dev/slusb0  c 243 0 && /sbin/modprobe/ungrab-winmodem && /sbin/modprobe slusb
S4:2345:respawn:/usr/sbin/slmodemd -d1 --country=THAILAND /dev/slusb0
...

สั่ง init ใหม่
# init q

ใช้งานได้แล้ว

ข้อมูลปรับปรุง

  • 51-12-09 บนเดเบียน lenny เคอร์เนล 2.6.26 ไม่ยอมให้คอมไพล์มอดูล slusb ซึ่งไม่ได้เป็น GPL ดังนั้น ตั้งแต่เคอร์เนล 2.6.26 เป็นต้นไป จะไม่สามารถใช้งาน slusb ได้แล้ว

debian: ตัวอย่างการติดตั้งสแกนเนอร์ Epson รุ่น CX5500

ถึงแม้ Epson จะมีไดรฟเวอร์มาให้ แต่ก็เป็นแพกเกจแบบ rpm ของ RedHat ทำให้การติดตั้งยังไม่สะดวกเท่าที่ควร
หน้าเว็บอยู่ที่ Avasys official Epson drivers
ซึ่งถ้านำมาแปลงด้วยโปรแกรม alien ก็อาจจะได้ แต่ที่ผมยกมาเป็นตัวอย่าง จะเป็นการปรุงด้วยเดเบียนโดยตรง

ตามตัวอย่าง ผมใช้เดเบียนรุ่น sid ซึ่งใช้ gcc-4.3 นะครับ

ติดตั้งแพกเกจสำหรับปรุง deb และ xsane

$ sudo aptitude install devscripts libsane-dev xsane

เอาไฟล์ซอร์สและแพทช์มาคอมไพล์

$ wget http://lx1.avasys.jp/iscan/2.11.0/iscan_2.11.0-1.tar.gz
$ wget http://aur.archlinux.org/packages/iscan/iscan/iscan-gcc43-fix.patch
$ tar zvxf iscan_2.11.0-1.tar.gz
$ cd iscan-2.11.0/
$ patch -Np0 -i ../iscan-gcc43-fix.patch
$ debuild -us -uc

จะได้ไฟล์ .deb ต้องติดตั้งด้วยพารามิเตอร์เพิ่มเติม เพราะแพกเกจนี้ ขัดกับแพกเกจ libsane-extras

$ sudo dpkg --force-overwrite --force-conflicts -i ../iscan_2.11.0-1_i386.deb

เสร็จแล้ว ต่อด้วยการปรับตั้ง
ก่อนอื่นดูค่าพวก Vendor ID กับ Product ID ก่อน ด้วยคำสั่ง

$ sane-find-scanner
...
found USB scanner (vendor= [Language Error], product=0x083f [Language Error]) at libusb:001:003
...

เราจะเอานำค่าเหล่านี้ไปปรับตั้ง

$ sudo vi /etc/sane.d/epkowa.conf

คอมเมนต์หน้าบรรทัด scsi และเพิ่มบรรทัด usb ดังตัวอย่าง

...
#scsi EPSON
...
usb
...
#usb 0x04b8 0x0110
usb 0x04b8 0x083f
...

ตรวจดูว่าในไฟล์กำกับอุปกรณ์ udev มี Vendor ID และ Product ID ด้วยหรือไม่ ถ้ายังไม่มี ต้องเติมเข้าไป (แต่ถ้าเป็นรุ่นตัวอย่างนี้ เขามีอยู่แล้ว)

$ sudo vi /etc/udev/rules.d/z60_libsane.rules
...
# Epson Stylus DX4450 (CX5500)
SYSFS{idVendor}=="04b8", SYSFS{idProduct}=="083f", MODE="0664", GROUP="scanner", ENV{libsane_matched}="yes"
...

สั่งให้มีผลเลย

$ sudo /etc/init.d/hal restart
$ sudo /etc/init.d/udev restart

(ถ้าไม่ได้ผล อาจต้องบูตเครื่องหรือล๊อกเอาต์แล้วล๊อกอินใหม่)

ต่อไปก็ทำให้เราสามารถใช้งาน scanner ได้ ด้วยการให้ชื่อเราเข้าไปอยู่ใน group ชื่อ scanner

$ sudo usermod -a -G scanner USER

เสร็จหมดแล้วครับ

สามารถใช้งานแสกนเนอร์ผ่านเมนู Application -> Graphics -> Image Scan
หรือสั่งผ่านบรรทัดคำสั่งว่า iscan ก็ใช้ได้เช่นกัน

อ้างอิง

debian: ติดตั้งสแกนเนอร์เครือข่าย

ใช้แพกเกจชุด sane ในการทำให้แสกนเนอร์ที่ติดตั้งอยู่ที่เครื่องเซิร์ฟเวอร์ สามารถใช้งานผ่านเครือข่ายได้

ทำที่เครื่องเซิร์ฟเวอร์

สมมุติว่าชื่อ server.example.com
ไอพี 192.168.1.1
ใช้งานเครือข่ายภายใน 192.168.1.0/24
และติดตั้งสแกนเนอร์ไว้แล้ว

ติดตั้งแพกเกจ sane และ inetd
# aptitude install sane sane-utils openbsd-inetd

ปรับให้ saned ทำงาน
# vi /etc/default/saned

...
#RUN=no
RUN=yes
...

ตั้งค่า inetd และเริ่ม inetd ใหม่
# vi /etc/inetd.conf

...
sane-port   stream  tcp nowait  saned:saned /usr/sbin/saned saned
...

# /etc/init.d/openbsd-inetd restart

ปรับตั้งค่าเครื่องลูกข่าย เราจะกำหนดให้ทุกเครื่องใช้งานได้
# vi /etc/sane.d/saned.conf

...
192.168.1.0/24
example.com
...

เสร็จแล้ว
ทดสอบว่าสแกนเนอร์ที่ติดตั้งไว้แล้ว สามารถใช้งานได้หรือไม่ ด้วยคำสั่ง
# scanimage -L

ทำที่เครื่องลูกข่าย

สมมุติว่าผู้ใช้งานชื่อ user1

ติดตั้งแพกเกจ xsane และ sane-utils
(xsane สามารถใช้งานกับลูกข่ายที่เป็นวินโดวส์ Xp ขึ้นไปได้ด้วย)
$ sudo aptitude install xsane sane-utils

ตั้งค่าให้รู้จักเซิร์ฟเวอร์
$ sudo vi /etc/sane.d/net.conf

...
192.168.1.1 #หรือ server.example.com ก็ได้ ถ้ามี dns server ภายใน
...

ปรับให้ชื่อเราไปอยู่ในกลุ่ม scanner
$ sudo usermod -a -G scanner user1

เสร็จแล้ว
ทดสอบว่าเครื่องลูกสามารถมองเห็นสแกนเนอร์ของเครื่องแม่ได้หรือไม่ จากคำสั่ง
$ scanimage -L

สามารถเรียกใช้งานผ่านโปรแกรม xsane

อ้างอิง

debian: แก้ปัญหามองไม่เห็น SATA

debian: lenny
kernel: 2.6.26-1-686

เครื่องมองไม่เห็นฮาร์ดดิสก์ SATA โดยขึ้นข้อความใน dmseg ว่า

...
[    3.228017] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[    3.249140] APIC error on CPU0: 00(08)
[   33.228013] ata1.00: qc timeout (cmd 0xec)
[   33.228019] ata1.00: failed to IDENTIFY (I/O error, err_mask=0x4)
...

แก้ด้วยการใส่ออปชั่นในการบูตว่า pci=nomsi
$ sudo vi /boot/grub/menu.lst

...
kernel      /boot/vmlinuz-2.6.26-1-686 root=/dev/hda1 ro quiet pci=nomsi
...

แล้วบูตใหม่ก็ใช้ได้

เอามาจาก : lkml.org : APIC error on 32-bit kernel

update

  • อาจต้องเพิ่มพารามิเตอร์ pci=nomsi,noapic,nosmp,roteirq,noacpi เสริมช่วย อาจได้ผลในการเขียนกลับได้ดีขึ้น
  • ทางแก้ที่ดีที่สุดคือ กลับไปใช้เคอร์เนลของ etch รุ่น 2.6.18 โดยไม่ต้องใส่พารามิเตอร์ จะได้ความเร็วในการเขียนกลับดีกว่าเยอะเลย
  • ล่าสุด กับเคอร์เนล 2.6.26 เติมพารามิเตอร์ pci=nomsi และใช้คำสั่ง
    # hdparm -Z /dev/sda
    # smartctl -a /dev/sda

    ได้ผลเป็นปกติแล้ว

Topic: 

debian: แก้ปัญหาเรื่อง Tapping บน Touchpad

debian: แก้ปัญหาเรื่อง Tapping บน Touchpad
Tapping คือการใช้นิ้วแตะบน Touchpad แล้วให้ผลเหมือนการคลิกเมาส์ปุ่มซ้าย ซึี่งบน Windows และ Ubuntu เขาปรับตั้งมาให้อยู่แล้ว

ทดสอบบน
Netbook: Acer Aspire One D255
Linux: Debian Squeeze 6.0

วิธีที่ทดลอง แต่ไม่ได้ผล คือ การตั้งไฟล์คอนฟิกใน /etc/X11/xorg.conf.d/ และ /etc/udev/rules.d/
Xorg เขารายงานว่าหาฮาร์ดแวร์ไม่พบบ้าง ไม่พบมอดูล fbcon บ้าง สุดท้ายคือต้องแก้ที่ session
แต่ไหน ๆ ทำแล้ว ก็เลยทำเรื่อง mouse scroll ด้วย ดังนี้

  • สำหรับ gnome-desktop มีผลกับเราคนเดียว
    ใช้เมนู System -> Preferences -> Mouse
    เลือก
    • Disable touchpad while typing
    • Enable mouse clicks with touchpad
    • Enable horizontal scrolling
  • สำหรับ gnome-desktop มีผลกับผู้ใช้ทุกคน
    ใช้บรรทัดคำสั่งดังนี้
    # gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.defaults --type bool --set /desktop/gnome/peripherals/touchpad/horiz_scroll_enabled true
    # gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.defaults --type bool --set /desktop/gnome/peripherals/touchpad/tap_to_click true
    # gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.defaults --type bool --set /desktop/gnome/peripherals/touchpad/disable_while_typing true
  • สำหรับ desktop อื่น มีผลกับเราคนเดียว (ลองกับ xfce-desktop) อย่างเดียว
    อันนี้เราทำกับ xserver โดยทำที่ xsession
    สร้างไฟล์ ~/.xsessionrc เนื้อไฟล์มีดังนี้
    synclient VertEdgeScroll=1
    synclient HorizEdgeScroll=1
    synclient TapButton1=1
  • สำหรับ desktop อื่น มีผลกับผู้ใช้ทุกคน (ลองกับ xfce-desktop) อย่างเดียว
    สร้างไฟล์ /etc/X11/Xsession.d/99x11-synaptic
    เนื้อไฟล์เหมือนเดิม
    synclient VertEdgeScroll=1
    synclient HorizEdgeScroll=1
    synclient TapButton1=1

เสร็จแล้ว

อ้างอิง: Solution, Tips And More: Enable Touchpad Tapping & Scrolling in Debian