UEFI / BIOS에서 작동 할 때 USB가 Linux에서 작동하지 않는 이유는 무엇입니까? GTX 650

배경을 위해 다음과 같은 최신 하드웨어로 새로운 기계를 만들었습니다.

  • AMD FX-8350
  • 기가 바이트 GA-990FXA-UD3 마더 보드
  • 16GB RAM
  • NVidia GTX 650 Ti
  • 킹스턴 SSD

이를 감안할 때 SSD에 다양한 버전의 Linux를 설치하려고 시도했으며 거의 ​​매번 실패했습니다. USB 썸 드라이브에서 Arch, Debian 안정, Debian sid 및 Ubuntu 12.10을 설치하려고 시도했지만 BIOS가 USB 드라이브를보고 부팅하는 동안 OS가 USB 장치를 열거하려고 시도하자마자 모든 USB 기능을 잃어 버렸습니다. (부팅 장치 포함).

결국 DVD를 굽고 SSD에 Ubuntu 12.10을 설치했습니다. American Megatrends UEFI / BIOS에서는 내 USB 키보드 및 마우스가 제대로 작동합니다. Live Ubuntu DVD의 사전 설치 메뉴에 있어도 키보드가 제대로 작동합니다.

Linux가 부팅 되 자마자 (Live DVD 또는 SSD에서) 모든 USB 기능이 손실되고 PS / 2 키보드를 통해서만 OS를 탐색 할 수 있습니다.

dmesg / syslog에 보이는 것은 ” failed to load microcode amd_ucode/microcode_amd_fam15h.bin” 에 관한 몇 줄이며 USB 장치가 초기화되지 않는 것을 볼 수 있습니다.

내가하면 lsusb모든 USB 호스트 컨트롤러를 볼 수 있지만 장치는 없습니다. 이렇게 lspci내가 기대했던 나에게 모든 하드웨어 보여줍니다. 그리고 lsmodI를 수행하면 USB 모듈이로드되지 않습니다 ( usb_ehci예 🙂 .

noapic커널 부팅 문자열로 전달하려고 시도했지만 이 문제에는 영향을 미치지 않았습니다.

마더 보드는 USB 3.0을 지원하지만 일반 USB 2.0 포트에 연결 한 모든 장치는 지원합니다.

나는 리눅스 에서 USB (그리고 내 온보드 네트워크 카드)를 죽이거나 막을 수있는 것에 대해 당황스럽게 생각 합니다. BIOS에서 작동하는 이러한 장치에는 아무런 문제가없는 것 같으며 테스트 및 작동 여부를 확인할 수있는 Windows 설치가 없습니다.

이미 마더 보드를 한 번 RMA했지만 두 번째 보드는 정확히 동일한 동작을 수행하므로 하드웨어 오류를 안전하게 배제 할 수 있다고 생각합니다 (동작이 동일하기 때문에 동일하게 결함이있는 보드 2 개를 얻을 확률이 없다고 생각합니다) 이것이 리눅스 문제 일 가능성보다 크다).

USB를 사용하려고 시도 할 수있는 또 다른 것은 무엇입니까 (그리고 이상적으로는 네트워크이지만 현재는 USB를 사용하겠습니다)?

편집 # 1 :

네트워킹이 없기 때문에 dmesg여기서 흥미로운 부분 만 관련시킬 수 있습니다.

관심이있는 dmesg것은 11 개의 USB 호스트 컨트롤러 (OHCI, EHCI 및 xHCI)가 있음을 알 수 있습니다. USB 장치를 감지 한 후 다음과 같이 즉시 실패합니다.

usb 3-1: new high-speed USB device number 2 using ehci_hcd
usb 3-1: device descriptor read/64, error -32

이는 OHCI 컨트롤러로 폴백 할 때까지 숫자가 증가하고 다른 USB 호스트 컨트롤러를 여러 번 반복하여 실패하지만 추가 메시지가 표시됩니다.

usb 8-1: device not accepting address 4, error -32

내 네트워킹 문제는 라우터에서 IPv6을 사용하도록 설정하지 않았기 때문에 문제와 관련이 있다고 생각합니다.

eth1: no IPv6 routers present

편집 # 2 :

lspci -vvv내 네트워크 어댑터 (온보드 및 확장 모두)가 Realtek Semiconductor (놀랍지 않음)임을 보여줍니다. RTL8111 / 8168B 및 RTL8169 / 8110 각각 내 USB 컨트롤러는 Etron Technology EJ168 (xHCI) 및 AMD nee ATI SB7x0 / SB8x0 / SB9x0 (EHCI & OHCI)입니다.

이제 씩씩 거리는 데비안을 실행하는 modprobe프로그램이 usb_common, usbcore, xhci_hcd, ehci_hcd, 및 ohci_hcd모든로드 기능.



답변

ubuntuforums.org 에서이 스레드 ( http://ubuntuforums.org/showthread.php?t=2114055 ) 의 답변을 찾았습니다 .

최신 기가 바이트 메인 보드에서는 (적어도) IOMMU Controller기본적으로 비활성화되어 있으며 그것이 무엇인지에 대한 힌트 나 표시를 제공하지 않는 BIOS 옵션 이 있습니다.

이 설정을 활성화하고 “매직”으로 재부팅하면 64 비트 Linux OS에서 모든 USB 및 네트워킹 문제가 복원됩니다 (어떤 문제는 중요하지 않음).

나는 그것이 간단한 수정을 오랫동안 찾는 것이라고 충격을 받았다.

여러분의 도움과 제안에 감사드립니다. 다른 사람들이 도움이 되길 바랍니다.

업데이트 : 현재 BIOS 설정에 IOMMU 컨트롤러 외에도 XHCI Handoff 및 EHCI Handoff 활성화가 포함되어 있음을 추가하고 싶습니다. 다른 사람들도 이것을 언급했으며이 두 핸드 오프를 활성화하면 USB 3.0 포트가 예상대로 작동 할 수 있습니다.


답변

GA-990FXA-UD7을 사용하여 USB 2.0 및 USB 3.0 컨트롤러와 온보드 이더넷 컨트롤러가 Linux에서 제대로 작동하려면 (Mint 17.1을 사용하고 있음) BIOS에서 다음 설정이 필요하다는 것을 알았습니다.

  • xHCI 핸드 오프-사용
  • EHCI 핸드 오프-활성화
  • IOMMU 컨트롤러-사용

UEFI를 비활성화하고 모든 부팅 옵션을 “레거시 만”으로 변경하는 것을 잊지 마십시오.

> 2.2TB 용량의 HDD로 부팅해야하는 경우 다른 문제가있을 수 있습니다.

내 부트 드라이브에 256GB SSD를 사용하고 / home에 mdadm을 사용하여 RAID 1 (미러링 된) 어레이에서 3TB HDD 쌍을 사용하고 있으며 모두 제대로 작동합니다.

기가 바이트 보드와 상당히 많은 작업을 한 결과, 990FXA-UD5 및 990FXA-UD3 보드는 BIOS가 매우 유사하다는 것을 알고 있으므로 해당 보드에도 동일하게 적용됩니다.


답변

이상하게도 거의 동일한 설정 (동일한 마더 보드, FX8350 프로세서)을 사용하더라도 IOMMU를 활성화해도 아무런 차이가 없었습니다. 여전히 USB, 네트워킹 등이 없습니다.

어떤 것은 도움을하지만, 커널 명령 행에 “IOMMU 소프트 =”추가되었다. 이제 모든 것이 잘 작동합니다 (이상한 이유로 Logitech Zone Touch Mouse가 작동하지 않는 것을 제외하고).


답변

참고로 리눅스가 BIOS를 통해 장치를 사용할 수없는 기술적 이유 : 일단 OS가 “보호 모드”(32 비트) 또는 “긴 모드”(64 비트)로 전환되면 더 이상 인터럽트를 보낼 수 없습니다 BIOS에. “실제 모드”(부팅시 16 비트)에서는 디스크를 읽거나 키보드를 입력하도록 BIOS 인터럽트를 호출 할 수 있습니다.

그러나 단점도 있습니다. 우선, 메가 바이트의 주소 지정 가능 메모리도 없습니다. 따라서 현대 OS는 리얼 모드에서 거의 첫 번째로 전환됩니다. 실제로 grub은 커널을로드하기 전에 보호 모드로 전환한다고 생각합니다.

자세한 내용 : http://wiki.osdev.org/Real_Mode http://wiki.osdev.org/Protected_Mode


답변

동일한 MB (rev 3)와 동일한 양의 RAM (Kingston)이 있습니다 (8 코어).

IOMMU의 팁은 약간 도움이되었습니다. 모든 포트는 USB 키보드, 모니터 USB 허브 및 USB (Realtek) Wi-Fi 어댑터를 볼 수 있지만 플래시 드라이브는 볼 수 없습니다.

이 솔루션이 도움이 된 것 같습니다.

cd /sys/bus/pci/drivers/ehci_hcd
ls

0000 : 00 : xx.x 형식의 파일이 표시됩니다. 다음 명령을 실행하십시오.

sudo sh -c 'echo -n "0000:00:xx.x" > unbind'

xx.x를 파일에 표시된 숫자로 바꾸십시오. ehci_hcd를 비활성화해야합니다.

이제 다음 스크립트를 사용하여 ehci_hcd를 비활성화 할 수 있습니다.

cd /sys/bus/pci/drivers/ehci_hcd/
sudo sh -c 'find ./ -name "0000:00:*" -print| sed "s/\.\///">unbind'

http://www.geekdevs.com/2010/04/solved-unable-to-enumerate-usb-device-disabling-ehci_hcd/


답변

이 단계는 Ubuntu 15.04를 실행하는 GIGABYTE 970A-DS3P 및 AMD-FX-8320에서 나에게 효과적이었습니다.

  • xHCI 핸드 오프-사용
  • EHCI 핸드 오프-활성화
  • IOMMU 컨트롤러-사용
  • UEFI-비활성화
  • 모든 부팅 옵션-레거시 만

답변

OpenSuse 13.1을 사용하여 기가 바이트 990FXA-UD3에서 동일한 FX8350을 실행하고 있습니다. 나를 위해 일한 해결책은 기본 선택 (또는 필자의 경우 OpenSuse 13.1을로드하는 데 사용하는 선택) 인 YAST를 사용하여 부트 로더를 편집하는 것이 었습니다. “quiet showopts”다음에 “iommu = pt”입니다.

예를 들면 다음과 같습니다.

“resume = / dev / disk / by-id / ata-Hitachi_HDS721010CLA332_JP2921HQ1076NA-part2 splash = 자동 조용한 iommu를 선택 함 = pt”

이제 모든 USB 포트 2.0 및 3.0이 작동하고 인터넷 네트워킹도 작동합니다!. 또한 BIOS에서 IOMMU가 활성화되어 있는지 확인하십시오.