====== Řešení problémů/USB ======
{{:usbpendrive.png}} {{:printer.png}} {{:disk.png}} {{:camera.png}}
Zde najdete **obecné** rady pro případ, kdy nemůžete zprovoznit zařízení připojené přes USB.
====== Diagnostika ======
{{:info.png}}
Detekci připojení a obousměrnou komunikaci mezi operačním systémem a zařízením má na starosti kernel (//jádro// systému). Pokud chceme o zařízení zjistit více, podíváme se na informace, které máme od kernelu k dispozici.
===== Co budete potřebovat =====
==== Systémové záznamy (logy) ====
Všechny důležité informace najdete v souboru **/var/log/syslog**, nebo v [[:Terminál|terminálu]] použijte příkaz ''dmesg''. Pokud chcete grafickou aplikaci, spusťte **Prohlížeč systémových protokolů**.
{{ .:logs_gui.png?500 }}
{{:info.png}} Další informace o záznamech najdete na [[:Sledování systému]].
==== Výpis všech zařízení pomocí lsusb ====
Příkaz **lsusb** zadaný v [[:Terminál|terminálu]] vypíše všechny USB porty a připojená zařízení.
{{ .:lsusb_gnome-terminal.png?500 }}
===== Jak na to =====
|Pokud je USB zařízení zasunuto v USB portu, vytáhněte ho.|
|Po chvíli znovu zasuňte.|
|Počkejte několik sekund, aby mohl kernel zařízení zaregistrovat.|
|Otevřete [[Terminál]] a podívejte se na výstup příkazů **lsusb** a **dmesg | tail**.|
{{:example.png}}
Podívejte se na výstup příkazu ''lsusb'': je tam zařízení vidět?
$ lsusb
Bus 005 Device 002: ID 03f0:2f11 Hewlett-Packard PSC 1200
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 002: ID 045e:00dd Microsoft Corp. Comfort Curve Keyboard 2000 V1.0
...
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Např. zde ve výpise jsou vidět 2 připojená zařízení
* sběrnice 5, zař. 2: tiskárna //Hewlett-Packard PSC 1200// (identifikační číslo výrobce: ''03f0'', id. číslo přístroje: ''2f11'')
* sběrnice 4, zař. 2: klávesnice //Microsoft Corp. Comfort Curve// (identifikační číslo výrobce: ''045e'', id. číslo přístroje: ''00dd'')
{{:example.png}}
Zkontrolujte posledních 10-20 řádků systémového záznamu: co k připojení říká kernel?
$ dmesg | tail
...
[ 9816.125887] EXT4-fs (sda1): bad geometry: block count 66264100 exceeds size of device (66263852 blocks)
====== Řešení ======
===== Zařízení není vidět ani v lsusb, ani v logu =====
* Zkuste výše uvedený postup znovu :)
* Vyzkoušejte jiný USB port. Nepoužívejte rozbočovač apod.
* Zkontrolujte funkčnost zařízení na jiném počítači/systému.
===== Je zařízení podporováno? =====
Z výstupu ''lsusb'' zkopírujte identifikační čísla (např. **03f0:2f11**) nebo název (//Hewlett-Packard PSC 1200//). Zadejte je do fóra nebo do vyhledávače (Google) a podívejte se, jestli je zařízení podporováno, nebo jestli měl někdo podobný problém.
===== Jsou v logu zaznamenány chyby? =====
Vyhledejte znění chybového hlášení na internetu: možná se už problém podařilo někomu vyřešit.
Příklad: do Googlu text
ubuntu "bad geometry: block count"
===== Zeptejte se na fóru Ubuntu =====
{{:ubuntu-logo.png}}
Snažte se uvést co nejvíce informací, hlavně
* podrobný popis problému a přesný přepis chybového hlášení (případně snímek obrazovky, třeba i z foťáku)
* co jste všechno už zkoušeli při řešení problému
* informace k systému (hardware, distribuce, vydání)
* co jste dělali předtím, než k problému došlo
* přidejte výstup z příkazů ''lsusb'' a ''dmesg | tail''
* případně připojte další relevantní logy (pokud jsou dlouhé, tak radši jako přílohu, nebo je nahrajte na [[http://paste.ubuntu.com/|Ubuntu pastebin]])
* ... a pokud se vám podaří problém nakonec vyřešit, nezapomeňte se pak na fóru pochlubit jak...
====== Technické detaily ======
===== lsusb =====
Příkaz **lsusb** prohlédne všechny soubory zařízení (//device/special file//) vytvořené kernelem v adresáři **/dev/bus/usb**. Pak stáhne základní informace ze zařízení. Nemusí se jednat jen o identifikační čísla, všechny informace je možné zobrazit pomocí
lsusb -v
Popis zařízení (výrobce + název) si najde podle identifikačních čísel v tabulce v souboru **/var/lib/usbutils/usb.ids**. Pokud v tabulce nějaký údaj chybí, ve výpise ''lsusb'' se objeví jen identifikační čísla.
===== dmesg | tail =====
Příkaz **dmesg** zobrazuje hlášení kernelu, příkazem **tail** vyfiltrujeme posledních 10 řádků. Pokud jich chceme více, připojíme za ''tail'' počet řádků (zde 20):
dmesg | tail -20