Debian Gnu/Linux ile USB Aygıtlar

Yazan : Serdar Aytekin - serdar~aytekin.web.tr
Versiyon : 1.0.0
Son Güncellenme Tarihi : 15-01-2005

Giriş :

Belgede yazılanların uygulanıp uygulanmaması tamamen uygulayan kişinin sorumluluğundadır. Belgede bahsedilenlerin uygulanması sonucu ortaya çıkabilecek hertürlü zarardan yazar sorumlu tutulamaz. Belge GNU Özgür Belgeleme Lisansının http://www.gnu.org/copyleft/fdl.html adresinde yer alan -son sürümdeki- lisans içeriğine bağlı kalmak koşulu ile aynen yada kısmen dağıtılabilir, yayınlanabilir.

Bu belgenin son sürümüne;

http://www.serdaraytekin.com/docs/os/debian/debian-usb-devices.html adresinden ulaşabilirsiniz.

USB 1.1 ve USB 2.0

USB 2.0 480 Mbps bant genişliği sunabilen USB (Universal Serial Bus) spesifikasyonun versiyonudur. USB 1.1 de sunulabilen bant genişliği 12 Mbps ile sınırlıdır. Dolayısıyla USB 2.0, USB 1.1'in 40 katı kadar bant genişliği ile yüksek hız sağlar. Her iki versiyonda da kablo yapısı ve portlar aynıdır. Ayrıca USB 2.0, USB 1.1 ile uyumludur. Yüksek hıza özellikle ihtiyacı olan CD/DVD yazıcı gibi cihazlar USB 2.0 standartını kullanırlar. Sonuç olarak USB 1.1 ve USB 2.0 ile üç farklı transfer hızı sağlanır.

- Yüksek Hız 480 Mbit/sec (60 MByte/sec)
- Tam (Full) Hız 12 Mbit/sec (1.5 MByte/sec)
- Düşük Hız 1.5 Mbit/sec

Makinem USB 2.0 Destekliyor mu?

Bu sorunun cevabını bulmak için lspci çıktınıza göz atmanız yeterli olacaktır. USB 2.0 desteği için EHCI (Enhanced Host Controller Interface) desteğinin olması gereklidir.

  • lspci -v | grep HCI
0000:00:1d.0 USB Controller: Intel Corp. 82801EB/ER (ICH5/ICH5R) USB UHCI #1 (rev 02) (prog-if 00 [UHCI])
0000:00:1d.1 USB Controller: Intel Corp. 82801EB/ER (ICH5/ICH5R) USB UHCI #2 (rev 02) (prog-if 00 [UHCI])
0000:00:1d.2 USB Controller: Intel Corp. 82801EB/ER (ICH5/ICH5R) USB UHCI #3 (rev 02) (prog-if 00 [UHCI])
0000:00:1d.3 USB Controller: Intel Corp. 82801EB/ER (ICH5/ICH5R) USB UHCI #4 (rev 02) (prog-if 00 [UHCI])
0000:00:1d.7 USB Controller: Intel Corp. 82801EB/ER (ICH5/ICH5R) USB2 EHCI Controller (rev 02) (prog-if 20 [EHCI])

Hangi Aygıt Sürücülerine İhtiyacım Var (HCD - Host Controller Driver veya HCI - Host Controller Interface)

Hangi aygıt sürücülerine ihtiyacınızın olacağı kullandığınız linux çekirdeğinin versiyonuna ve hangi USB spesifikasyonunu kullanacağınıza göre çok az değişiklik gösterebilir.

USB 2.0 spesifikasyonları ile çalışabilmek için EHCI sürücüsüne (ehci-hcd) bununla birlikte uhci (uhci-hcd) veya ohci (ohci-hcd) sürücülerinden birisine ihtiyacınız olacak. Uhci (Universal HCI), Intel tarafından geliştirilen aygıt kontrol arabirimidir. Dolayısıyle Intel çipsetli kontrol aygıtları UHCI kullanırlar. Ohci (Open HCI) ise Compaq ve bir çok firmanın katılımı ile ortaya konulan USB HCI spesifikasyonudur. Intel çipseti harici kontrol arabirimi kullanan üreticilerin bir kısmı OHCI 'yi tercih etmektedirler.

Hangi üreticinin hangi aygıt kontrol arabirimini (HCI) tercih ettiğini http://www.qbik.ch/usb/devices/controller.php adresinden öğrenebilirsiniz.

Aşağıda http://www.linux-usb.org adresinden alınmış kontrol arabirimlerini ve bunlara ait modül isimlerini gösteren tablo bulunmaktadır.

Not : HCI ifadesi 2.6 çekirdek ile birlikte HCD olarak anılmaya başlanılmıştır.

Kontrol Arabirimi
Durumu
Hangi Çekirdekte Hangi Modül İsmi ile Bulunduğu
UHCI (usb-uhci) Kararlı 2.2 ve 2.4 usb-uhci olarak yer alır.
UHCI Alternatifi Kararlı 2.2 ve 2.4 içerisinde uhci olarak 2.6 içerisinde uhci-hcd olarak yer alır.
OHCI Kararlı 2.2 ve 2.4 içerisinde usb-ohci olarak 2.6 içerisinde ohci-hcd olarak yer alır.
EHCI (ehci-hcd) Kararlı

2.4.19 versiyonundan itibaren ehci-hcd (2.6 'larda dahil) olarak çekirdekte direk yer almaya başlamıştır.

Yukarıdaki tablonun bir başka ifadesi, çekirdek 2.6' da OHCI sürücüsü ohci-hcd olarak UHCI sürücüsü ise uhci-hcd olarak EHCI ise ehci-hcd olarak yer alır. Çekirdek 2.4 ve öncesinde ise OHCI sürücüsü usb-ohci olarak yer alırken bu çekirdek versiyonlarında kullanılabilen iki farklı UHCI sürücüsü vardır ki bunlar usb-uhci ve yine bunun alternatif sürücüsü olarak uhci yer alır. Yine 2.4 için EHCI sürücüsü ise 2.4.19 ile birlikte ehci-hcd olarak doğrudan yer almaya başlamıştır.

Bir USB Aygıtın Çalışması İçin Hangi Modüller Gerekli?

Elinizdeki herhangibir USB aygıtının düzgün şekilde çalışabilmesi için gerekli veya olmasında fayda olan modüller ve yazılımlar;

  • Yukarıdaki tabloda yer alan uygun modül veya modüller (USB 1.1 için UHCI veya OHCI USB 2.0 için EHCI)
  • Cihazın çekirdek ile irtibatını sağlayan usbcore modulü (usbcore.o)
  • Kullanacağınız aygıtın türüne göre değişiklik gösterebilecek olan modüller (usb_storage, sg, sd_mod, scsi_mod vb.)
  • Opsiyonel olarak cihaz USB portuna takıldığında, cihazın hemen algılanılıp gerekli modüllerin otomatik olarak yüklenmesini sağlayan yazılım. Tercihen hotplug.
  • Yine opsiyonel olarak cihazın kontrolünü ve kullanımını sağlayacak ekstra yazılımlar. (wireless-tools vb.)

Aşağıda yukarıdaki ifadelerin resimsel anlatımı bulunmaktadır.

USB Modülleri Arasındaki İlişki ve İletişim Modeli

Aşağıdaki şekilde özellikle usb klavye (usbkbd) ve usb fare (usbmouse)' nin durumuna bakalım. Görüldüğü üzere usb cihazların çekirdek ile haberleşebilmeleri için öncelikle aygıt kontrol arabirimine (HCI) ve usbcore mcdülüne ihtiyaç vardır. USB farenin aynı seviyede bulunan usb-uhci modülü ile birlikte bir yandan usbcore diğer yandan da input ve mousedev modülü ile çekirdek ile iletişim kurduğuna dikkat ediniz. Aynı şekilde usb klavyenin de bir taraftan usb-uhci modülü ile usbcore üzerinden diğer yandan da keybdev ce usbkbd modülü ilede input modülü üzerinden çekirdek ile iletişime geçtiğine dikkat ediniz. Aslında buradaki şekilde eksik olan HID (Human Interface Device) varki mouse, klavye, joystik gibi çekirdek seviyesinde bununla handle edilirler.

Burada usb-uhci (yukarıdaki tabloya göre farklı bir HCI de olabilirdi) ve usbcore usb aygıt için gerekli olan modül diğerleri ise aygıtın durumuna göre farklılık gösteren ekstra modüllerdir.

* Şeklin orjinal hali http://www.linux.it/~rubini/docs/usb/usb.html adresinde yer almaktadır.

USB Aygıtı Dosya Sistemi (usbfs veya usbdevfs)

USB aygıtı dosya sistemi (usbdevfs veya yeni ismi ile usbfs) sistem tarafından otomatik olarak üretilen ve sisteme bit usb cihaz takıldığı zaman hotplug tarzı programlar tarafından otomatik olarak /proc/bus/usb üzerine bağlanır. Dilerseniz bu bağlama işlemini aşağıdaki komut ile ellede yapabilirsiniz. Kullanabilmek için çekirdekte bu desteğin (Preliminary USB device filesystem) olmasına dikkat ediniz.

mount -t usbfs none /proc/bus/usb

Bu işlemin makinenizi her yeni başlattığınızda otomatik olarak yapılmasını istiyorsanız (hotplug tarzı bir araçta kullanmıyorsanız) /etc/fstab içerisine aşağıdaki kaydı girebilirsiniz.

none /proc/bus/usb usbdevfs defaults 0 0

Ayrıca zorunlu olmasada /etc/fstab içerinde yer almasında fayda olan usbdevfs satırı (çekirdekte usbdevfs desteği olmalı)

usbdevfs sayesinde lsusb ile sistemimizde mevcut olan usb aygıtlarını aşağıdaki gibi listeleyebiliriz.

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 002 Device 002: ID 04e8:9826 Samsung Electronics Co., Ltd
Bus 001 Device 001: ID 0000:0000

Ayrıca usbdevfs sayesinde /proc/bus/usb/devices ve /proc/bus/usb/drivers içerisinden önemli bilgilere ulaşabiliriz.

  • cat /proc/bus/usb/drivers

ile aşağıda görülen usbdevfs ve hub herdaim olmak üzere (çünkü bunlar usbcore'un bir parçasıdır) mevcut sürücülerin listesini alırsınız.

usbdevfs
hub

  • cat /proc/bus/usb/devices

ilede yine mevcut aygıtlar hakkında detaylı bilgilere ulaşabilirsiniz.

C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr= 0mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl=255ms
T: Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=12 MxCh= 0
D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=16 #Cfgs= 1
P: Vendor=04e8 ProdID=9826 Rev= 1.00
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=100mA
I: If#= 0 Alt= 0 #EPs= 3 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=83(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=81(I) Atr=03(Int.) MxPS= 32 Ivl=16ms
T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=480 MxCh= 8
B: Alloc= 0/800 us ( 0%), #Int= 0, #Iso= 0
D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=01 MxPS= 8 #Cfgs= 1
P: Vendor=0000 ProdID=0000 Rev= 2.04
S: Manufacturer=Linux 2.4.26-1-386 ehci_hcd
S: Product=Intel Corp. 82801EB USB2
S: SerialNumber=00:1d.7
C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr= 0mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 2 Ivl=256ms

Yukarıdaki tablo ile ilgili detaylı bilgiyi bilgisayarınızda /usr/src/linux/Documentation/usb/proc_usb_info.txt içerisinde bulabilirsiniz. Örnek olması açısından,

T = Topoloji bilgilerini verir ve yine örnek olarak buradaki Spd aygıtın hızını bildirir. Yukarıdaki satırlarda Topoloji bilgilerinde Spd=12 ve Spd=480 ifadelerinin anlamı şudur;


12 = 12 Mbit/s tam hız (USB 1.1 tam hız)
480 = 480 Mbit/s yüksek hız (USB 2.0)

HID (Human Interface Device)

USB mouse, USB klavye gibi aygıtları kullanabilmek için iki yöntem vardır. Bunlar;

  • Standalone Boot Protocol (HIDBP)
  • Full Featured HID Driver (HID)

yöntemleridir. İlk yöntem biraz daha alt seviye olması sebebiyle masaüstü bilgisayarlarda "Full Featured HID" yöntemi tercih edilir. HIDBP genelde gömülü (embeded) sistemlere yöneHIDBP ve HID yöntemi aynı anda tercih edilmez.

Çekirdekte Ne Nerede?

Aşağıda 2.4 ve 2.6 versiyon çekirdekler için en azından USB hafıza ünitesini sistemimize düzgün olarak tanıtabilmek için gerekli modüllere koyu renkle işaret edilmeye çalışılmıştır. USB desteğinin 2.6 ile birlikte doruk noktaya ulaştığını, bilimum cihaz için çekirdek içerisinden direk desteğin gelmeye başladığını rahatlıkla görebilirsiniz.

Tekrar belirteyimki aşağıdaki konfigurasyon şekilleri sadece örnek olması açısından sunulmuştur sizin kullanacağınız usb aygıt için bazı modüllerin aktif olmasına gerek olmayabileceği gibi burda koyu renkle ifade edilen modüllerin yetmeyeceği ekstra modüllerin eklenmesi gerektiği durumlarda olabilir.

Kernel 2.4.X için;

USB Desteği (USB support)

<M> Support for USB
[ ] USB verbose debug messages (NEW)
--- Miscellaneous USB options
[ ] Preliminary USB device filesystem (NEW)
--- USB Host Controller Drivers <M> EHCI HCD (USB 2.0) support (EXPERIMENTAL) (NEW) <M> UHCI (Intel PIIX4, VIA, ...) support (NEW)
<M> UHCI Alternate Driver (JE) support (NEW)
<M> OHCI (Compaq, iMacs, OPTi, SiS, ALi, ...) support (NEW)
--- USB Device Class drivers
--- SCSI support is needed for USB Storage
< > USB Modem (CDC ACM) support (NEW)
< > USB Printer support (NEW)
--- USB Human Interface Devices (HID)
<M> USB Human Interface Device (full HID) support (NEW)
--- Input core support is needed for USB HID input layer or HIDBP support
--- USB Imaging devices
< > USB Kodak DC-2xx Camera support (NEW)
< > USB Scanner support (NEW)
--- USB Multimedia devices
--- Video4Linux support is needed for USB Multimedia device support
--- USB Network adaptors
--- USB port drivers
USB Serial Converter support --->
--- USB Miscellaneous drivers
< > Auerswald device support (NEW)
< > Texas Instruments Graph Link USB (aka SilverLink) cable support (NEW)
< > USB LCD device support (NEW)

Scsi Desteği (SCSI support)

* Bu kısımdaki modüller USB hafıza ünitelerini ilgilendirmesi sebebiyle verilmiştir.

<M> SCSI support
--- SCSI support type (disk, tape, CD-ROM)
<M> SCSI disk support (NEW)
(40) Maximum number of SCSI disks that can be loaded as modules (NEW)
< > SCSI tape support (NEW)
< > SCSI OnStream SC-x0 tape support (NEW)
< > SCSI CD-ROM support (NEW)
<M> SCSI generic support (NEW)
--- Some SCSI devices (e.g. CD jukebox) support multiple LUNs
[ ] Enable extra checks in new queueing code (NEW)
[ ] Probe all LUNs on each SCSI device (NEW)
[ ] Verbose SCSI error reporting (kernel size +=12K) (NEW)
[ ] SCSI logging facility (NEW)
SCSI low-level drivers --->

Kernel 2.6.X için;

USB Desteği (Device Drivers ---> USB support)

<M> Support for Host-side USB
[ ] USB verbose debug messages
--- Miscellaneous USB options
[M] USB device filesystem
[ ] Enforce USB bandwidth allocation (EXPERIMENTAL)
[ ] Dynamic USB minor allocation (EXPERIMENTAL)
[ ] USB suspend/resume (EXPERIMENTAL) (NEW)
--- USB Host Controller Drivers
<M> EHCI HCD (USB 2.0) support
[ ] Full speed ISO transactions (EXPERIMENTAL)
[ ] Root Hub Transaction Translators (EXPERIMENTAL)
<M> OHCI HCD support
<M> UHCI HCD (most Intel and VIA) support
--- USB Device Class drivers
< > USB Audio support
< > USB Bluetooth TTY support
< > USB MIDI support
< > USB Modem (CDC ACM) support
< > USB Printer support
<M> USB Mass Storage support
[ ] USB Mass Storage verbose debug
[ ] USB Mass Storage Write-Protected Media Detection (EXPERIMENTAL) (NEW)
[ ] Datafab Compact Flash Reader support (EXPERIMENTAL)
[ ] Freecom USB/ATAPI Bridge support
[ ] ISD-200 USB/ATA Bridge support
[ ] Microtech/ZiO! CompactFlash/SmartMedia support
[ ] HP CD-Writer 82xx support (EXPERIMENTAL)
[ ] SanDisk SDDR-09 (and other SmartMedia) support (EXPERIMENTAL)
[ ] SanDisk SDDR-55 SmartMedia support (EXPERIMENTAL)
[ ] Lexar Jumpshot Compact Flash Reader (EXPERIMENTAL)
--- USB Human Interface Devices (HID)
<M> USB Human Interface Device (full HID) support
[M] HID input layer support
[ ] Force feedback support (EXPERIMENTAL)
[ ] /dev/hiddev raw HID device support
[ ] /dev/hiddev raw HID device support
USB HID Boot Protocol drivers --->
< > Aiptek 6000U/8000U tablet support
< > Wacom Intuos/Graphire tablet support
< > KB Gear JamStudio tablet support
< > Griffin PowerMate and Contour Jog support
< > MicroTouch USB Touchscreen Driver
< > eGalax TouchKit USB Touchscreen Driver
< > X-Box gamepad support
< > ATI / X10 USB RF remote control
--- USB Imaging devices
< > USB Mustek MDC800 Digital Camera support (EXPERIMENTAL)
< > Microtek X6USB scanner support
< > HP53xx USB scanner support (EXPERIMENTAL)
--- USB Multimedia devices
< > DABUSB driver
--- Video4Linux support is needed for USB Multimedia device support
--- USB Network adaptors
< > USB CATC NetMate-based Ethernet device support (EXPERIMENTAL)
< > USB KLSI KL5USB101-based ethernet device support
< > USB Pegasus/Pegasus-II based ethernet device support
< > USB RTL8150 based ethernet device support (EXPERIMENTAL)
< > Multi-purpose USB Networking Framework
--- USB port drivers
< > USS720 parport driver
USB Serial Converter support --->
--- USB Miscellaneous drivers
< > EMI 6|2m USB Audio interface support
< > EMI 2|6 USB Audio interface support
< > Texas Instruments Graph Link USB (aka SilverLink) cable support
< > USB Auerswald ISDN support (EXPERIMENTAL)
< > USB Diamond Rio500 support (EXPERIMENTAL)
< > USB Lego Infrared Tower support (EXPERIMENTAL)
< > USB LCD driver support
< > USB LED driver support
< > Cypress USB thermometer driver support
< > USB PhidgetServo support
< > USB testing driver (DEVELOPMENT)
USB Gadget Support --->

Scsi Desteği (Device Drivers ---> SCSI device support)

* Bu kısımdaki modüller USB hafıza ünitelerini ilgilendirmesi sebebiyle verilmiştir.

--- SCSI device support
[*] legacy /proc/scsi/ support
--- SCSI support type (disk, tape, CD-ROM)
<M> SCSI disk support
< > SCSI tape support
< > SCSI OnStream SC-x0 tape support
< > SCSI CDROM support
<M> SCSI generic support
--- Some SCSI devices (e.g. CD jukebox) support multiple LUNs
[ ] Probe all LUNs on each SCSI device
[ ] Verbose SCSI error reporting (kernel size +=12K)
[ ] SCSI logging facility
SCSI Transport Attributes --->
SCSI low-level drivers --->

Şimdi örnek olarak bir kaç çeşit USB aygıtın nasıl kullanılabileceğine değinmeye çalışalım.

USB Flash Hafıza Ünitesi Kullanımı :

Yukarıdaki bilgilerimizde biliyoruz ki ilk önce bize USB aygıtlar için gerekli temel bir kaç modül var. Bunların bir kısmının yine kullandığımız çekirdek versiyonuna ve USB 1.1 ve USB 2.0 spesifikasyonuna göre değişiklik gösterebileceğini biliyoruz. Şayet modüler bir çekirdek kullanıyorsak (apt-get install kernel-image-xxx benzeri bir kurulum buna örnek olacaktır) özel durumlar dışında USB aygıtların sisteme tanıtılması sürecinde büyük problemler ile karşılaşma ihtimalimiz hayli azalıyor.

Maddeler halinde izlenmesi gereken yola ve nelerin gerekli olacağına bakalım;

  • Yukarıdaki tablodan kullandığımız çekirdek ve cihazın desteklediği USB versiyonuna göre uygun modül veya modüller (usb-uhci, usb-ohci, ehci-hcd gibi). Gerekli modülleri yüklemek için insmod veya modprobe komutlarını kullanabiliriz.
  • Temel USB modülü olan usbcore (usbcore.o)
  • Hafıza ünitesi kullanımı için özel olarak ihtiyacımız olan ekstra modüller (sd_mod, scsi_mod ve usb-storage gibi)

Bu noktada yine "lsmod" ile modüllerin durumu kontrol edebiliriz. Aşağıda örnek bir lsmod çıktısının konu ile ilgili olan kısmı yer almakta.

vfat                    9164   1  (autoclean)
fat 29240 0 (autoclean) [vfat]
sd_mod 11180 2 (autoclean)
usb-storage 60256 1
uhci 22416 0 (unused)
ehci-hcd 15592 0 (unused)
usbcore 54240 0 [usb-storage uhci ehci-hcd]
scsi_mod 87192 3 [sd_mod usb-storage ide-scsi]
  • USB aygıtımızın sistem takıldığı anda tetiklenip gerekli modüllerin otomatik yüklenmesini sağlayacak yazılım özellikle modüler bir çekirdek kullandığımız durumlarda çok büyük fayda sağlıyacaktır bunun için;
  • apt-get install hotplug

ile söz konusu işleri yerine getirebilen hotplug yazılımını kurmamız yeterli olacaktır. Usb aygıtımız takılı iken hotplug'ı ellede tetikleyip gerekli modüllerin yüklenmesini sağlayabiliriz. Bunun için;
  • /etc/init.d/hotplug restart

    uygun olacaktır.

  • Sonraki adımda dmesg komutu ile aygıtın durumunu kontrol edebiliriz. Veya /var/log/syslog, /var/log/messages bize bilgi sunabilir. Buradan aygıtın hangi sürücü ile tanındığı gibi bilgilerede erişebiliriz. Örnek bir "dmesg grep | Storage" çıktısı aşağıda görülmekte
Initializing USB Mass Storage driver...
scsi1 : SCSI emulation for USB Mass Storage devices
WARNING: USB Mass Storage data integrity not assured
USB Mass Storage device found at 2
USB Mass Storage support registered.
  • fdisk -l /dev/sda (/dev/sda bilgisini dmesg çıktısından öğrendik)

ile usb diskimizin bölümleme durumunu görebiliriz

Disk /dev/sda: 262 MB, 262144000 bytes
16 heads, 32 sectors/track, 1000 cylinders
Units = cylinders of 512 * 512 = 262144 bytes

Device Boot Start End Blocks Id System
/dev/sda1 * 1 1000 255983+ 6 FAT16
Partition 1 has different physical/logical endings:
phys=(998, 15, 32) logical=(999, 15, 32)

  • mkdir /mnt/usbdisk
  • mount -t vfat /dev/sdaX /mnt/usbdisk

ile artık kullanıma hazır.

USB Klavye, Fare veya Joystik Kullanımı :

Klavye veya fare kullanımı diğerlerine göre bir miktar farklılık göstermesi sebebiyle bunada kabaca değinelim. USB klavye, fare veya joystik benzeri aygıtların kullanımında işin içine HID (Human Interface Device) girdiği için çekirdekte HID ve bunun yanında da Input (çekirdekte "Input device support" bölümünde) modüllerine ihtiyaç var.

Ayrıca kullandığınız aygıtın türüne göre fare ise mouse desteğinin (mousedev) , klavye ise keyboard (keybdev) desteğininde çekirdekte verilmiş olması gerekir. Yukarıda USB modülleri arasındaki ilişkinin resmedildiği şekil bu konuyu izah etmekte.

2.4 Kernel için örnekleme yapacak olursak (Input core support bölümü)

<M> Input core support
<M> Keyboard support
<M> Mouse support
<M> Joystick support

HID ile ilgili 2.4 çekirdek konfigürasyonu;

<M> USB Human Interface Device (full HID) support (NEW)
[M] HID input layer support

NOT: "HID input layer support" kısmının aktif olabilmesi için "Input core support" 'un seçilmiş olması gerekir.

Ve yine "USB support" bölümünden;

<M> Support for USB
[M] Preliminary USB device filesystem (NEW)
<M> UHCI Alternate Driver (JE) support (NEW)
<M> OHCI (Compaq, iMacs, OPTi, SiS, ALi, ...) support (NEW)

Desteklerinin USB klavye, fare veya joystik için uygun olanının/olanlarının seçilmiş olması gerekir.

Klavye kullanımında gerekli modüller yüklü olduktan sonra hemen hemen sorun yaşamazsınız. Ancak fare ile ilgili XF86Config dosyanızda bir takım düzenlemeler yapmak durumunda kalabilirsiniz. XF86Config için örnek bir USB fare ayarı şu şekilde olabilir.

Tekerlekli bir fare için örnek /etc/X11/X86Config-4 konfigürasyonu:

Section "InputDevice"
Identifier "Generic Mouse"
Driver "mouse"
Option "SendCoreEvents" "true"
Option "Device" "/dev/input/mice"
Option "Protocol" "IMPS/2"
Option "Buttons" "5"
Option "ZAxisMapping" "4 5"
EndSection

Ayrıca fare olarak sadece usb fareniz varsa (trackball gibi başka benzer bir aygıt yoksa) XF86Config-4 dosyasındaki ServerLayout bölümünde yer alan "CorePointer" kısmını aşağıdaki gibi düzenleyin.

InputDevice "USB Mouse" "CorePointer"

Şayet usb farenizin yanında başka benzer başka bir aygıt (trackball veya ps/2 vs) de varsa yine InputDevice kısmını aşağıdaki gibi düzenleyip yukarıdaki ServerLayout bölümüne de diğer fare türünüze ait bilgiyi de ekleyin.

Option "SendCoreEvents" "true"

Veya başka bir yöntem olarak; sadece InputDevice kısmına ikinci fare türünüzü "SendCoreEvents" parametresi ile ekleyebilirsiniz. Bunun içinde şu örnek açıklayıcı olacaktır.

Section "InputDevice"
Identifier "PS2 Mouse"
Driver "mouse"
Option "Device" "/dev/psaux"
Option "Protocol" "PS/2"
EndSection


Section "InputDevice"
Identifier "USB Mouse"
Driver "mouse"
Option "SendCoreEvents" "true"
Option "Device" "/dev/input/mice"
Option "Protocol" "IMPS/2"
Option "Buttons" "5"
Option "ZAxisMapping" "4 5"
EndSection


[...]
Section "ServerLayout"
[...]
InputDevice "PS2 Mouse" "CorePointer"
InputDevice "USB Mouse" "SendCoreEvents"
[...]
EndSection

Ayrıca şayet /dev/input/mice (ls -al /dev/input/mice ile kontrol edebilirsiniz) sisteminizde yoksa;

mkdir /dev/input
mknod /dev/input/mice c 13 63

ile oluşturmanız gerekir.

Konu ile ilgili ayrıntılı bilgiye http://linuxusbguide.sourceforge.net/USB-guide-1.0.9/x201.html adresinden ulaşabilirsiniz.

Diğer USB Aygıtlar (Yazıcı, Kamera ...)

Bir çok usb aygıtı yazıda ifade edilen gerekli modülleri uygun şekilde yükleyerek sorunsuzca kullanabilirsiniz. Bazen direk çekirdek tarafından desteklenmeyen usb aygıtlar ile karşılaşırsanız yapmanız gereken öncelikle sistemde ilgili temel usb modüllerini yüklemek (ehci|uhci|ohci, usbcore gibi) daha sonra elinizdeki bu usb aygıt için ilgili aygıtın web sitesinden çekeceğiniz sürücüyü derleyip aktif etmek olabilir. Ancak böyle bir durumda ilk önce ilgili cihazın sürücüsü için deb paketi mevcut mu diye araştırmak daha uygun ve zahmetsiz çözüm olabilir.

Mesela çoğu yazıcı için çekirdekte temel usb modüllerinin yanısıra yazıcı için de usb desteğini aktif ettikten sonra "insmod printer" gibi bir çözüm işe yarayacaktır.

Benzer şekilde Usb Dijital Video Kamera ile Usb hazıfa ünitesinin kullanımı çok farklılık arz etmiyecektir. Neredeyse temel usb modüllerine ilave olarak usb-storage modülü ihtiyacınızı görecektir.

Kaynaklar :