Como pano de fundo, acabei de construir uma nova máquina com hardware moderno, incluindo:
- AMD FX-8350
- Placa-mãe Gigabyte GA-990FXA-UD3
- 16GB RAM
- NVidia GTX 650 Ti
- Kingston SSD
Dado isso, tentei instalar várias versões do Linux no SSD e encontrei falhas quase todas as vezes. Tentei instalar o Arch, Debian stable, Debian sid e Ubuntu 12.10 a partir de uma unidade USB, mas enquanto o BIOS via a unidade USB e começava a inicializá-la, assim que o sistema operacional tentou enumerar os dispositivos USB, perdi toda a funcionalidade USB (incluindo o dispositivo de inicialização).
Eventualmente, gravei um DVD e instalei o Ubuntu 12.10 no SSD. Note-se que meu teclado USB (e mouse) funcionam bem enquanto estão na UEFI / BIOS da Megatrends americana. Mesmo quando estou nos menus de pré-instalação no Live Ubuntu DVD, o teclado funciona bem.
Assim que o Linux é inicializado (Live DVD ou SSD), perco toda a funcionalidade USB e só posso navegar no sistema operacional usando um teclado PS / 2.
O que vejo no dmesg / syslog são algumas linhas sobre " failed to load microcode amd_ucode/microcode_amd_fam15h.bin
" e vejo dispositivos USB falhando ao inicializar.
Se eu fizer um lsusb
, posso ver todos os controladores de host USB, mas nenhum dos dispositivos. Fazer um lspci
me mostra todo o hardware que eu esperaria. E fazendo um lsmod
eu não vejo nenhum módulo usb carregado ( usb_ehci
por exemplo).
Tentei passar noapic
para a string de inicialização do kernel e não teve efeito sobre esse problema.
A placa-mãe suporta USB 3.0, mas todos os dispositivos conectados às portas USB 2.0 normais.
Estou um pouco confuso com o que poderia estar matando / impedindo o USB (e minha placa de rede interna) de trabalhar no Linux . Parece não haver nenhum problema com qualquer um desses dispositivos funcionando no BIOS e não tenho uma instalação do Windows disponível para testar e verificar se funciona.
Eu já fiz a RMA da placa mãe uma vez, mas a segunda tem exatamente o mesmo comportamento, então acho que posso descartar com segurança falhas de hardware (já que o comportamento é idêntico, não acho estranho eu ter duas placas com defeito idêntico são maiores do que as chances de isso ser um problema do Linux).
O que mais posso tentar para que o USB (e, de preferência, minha rede, mas vamos continuar usando o USB por enquanto) funcione?
Edição nº 1:
Como não tenho rede, só posso relacionar partes interessantes dmesg
daqui.
De dmesg
meu interesse , posso ver que tenho 11 controladores de host USB (OHCI, EHCI e xHCI). Ele detecta meus dispositivos USB e falha imediatamente da seguinte maneira:
usb 3-1: new high-speed USB device number 2 using ehci_hcd
usb 3-1: device descriptor read/64, error -32
Isso se repete várias vezes, incrementando o número e tentando outros controladores de host USB até retornar aos controladores OHCI que também falham, mas têm uma mensagem adicional:
usb 8-1: device not accepting address 4, error -32
Acho que meus problemas de rede têm a ver com o fato de não ter o IPv6 ativado no meu roteador e isso parece ser um problema
eth1: no IPv6 routers present
Edição # 2:
lspci -vvv
mostra que meus adaptadores de rede (integrados e de expansão) são Realtek Semiconductor (sem surpresa); RTL8111 / 8168B e RTL8169 / 8110, respectivamente. Meus controladores USB são a Etron Technology EJ168 (xHCI) e a AMD ATI SB7x0 / SB8x0 / SB9x0 (EHCI & OHCI)
Agora rodando Debian wheezy modprobe
mostras usb_common
, usbcore
, xhci_hcd
, ehci_hcd
, e ohci_hcd
todos carregados e funcionando.
dmesg
, tentoumodprobe
módulos relacionados ao USB?Respostas:
Encontrei a resposta deste tópico ( http://ubuntuforums.org/showthread.php?t=2114055 ) em ubuntuforums.org.
Parece que, com as placas-mãe Gigabyte mais recentes (pelo menos), há uma opção de BIOS chamada
IOMMU Controller
que está desativada por padrão e não dá nenhuma pista ou indicação sobre o que é.A ativação dessa configuração e a reinicialização "magicamente" restauram todos os meus problemas de USB e de rede em um sistema operacional Linux de 64 bits (não importa qual).
Estou um pouco chocado e feliz por ter sido uma busca tão longa por uma solução tão simples.
Obrigado a todos por sua ajuda e sugestões. Espero que outros achem isso útil.
Atualização: gostaria de acrescentar que minhas configurações atuais do BIOS também incluem a habilitação do XHCI Handoff e EHCI Handoff, além do IOMMU Controller. Outros também mencionaram isso, e permitir essas duas transferências também permite que minhas portas USB 3.0 funcionem conforme o esperado.
fonte
Acabei de aprender, com o meu GA-990FXA-UD7, que, para os controladores USB 2.0 e USB 3.0 e o controlador Ethernet integrado, para funcionar corretamente no Linux (estou usando o Mint 17.1), são necessárias as seguintes configurações no BIOS:
Não se esqueça de desativar o UEFI e alterar todas as opções de inicialização para "Somente legado".
Se você realmente precisar inicializar a partir de um HDD com capacidade> 2,2 TB, poderá ter um problema diferente em suas mãos.
Estou usando um SSD de 256 GB para minha unidade de inicialização e um par de HDs de 3 TB em uma matriz RAID 1 (espelhada) usando mdadm para minha / casa e tudo está funcionando bem.
Tendo trabalhado bastante com placas Gigabyte, sei que as placas 990FXA-UD5 e 990FXA-UD3 têm BIOS muito semelhante, portanto é provável que o mesmo se aplique também a essas placas.
fonte
iommu=soft
em conjunto com o xHCI + eHIC Handoff e o IOMMU Controller (todos ativados), sem a necessidade de "Legacy Only". Arquive o Linux na inicialização a toda velocidade, EFI e sem problemas de dispositivo raiz iommu ou usb3.Curiosamente, apesar de eu ter uma configuração quase idêntica (mesma placa-mãe, processador FX8350), permitir que o IOMMU não fizesse diferença para mim. Ainda não há USB, rede, etc.
O que ajudou, no entanto, foi adicionar "iommu = soft" à linha de comando do kernel. Agora tudo funciona bem (exceto que, por algum motivo estranho, meu Logitech Zone Touch Mouse não funciona).
fonte
FYI, os motivos técnicos pelos quais o Linux não pode usar dispositivos "através" do BIOS: depois que o sistema operacional faz a transição para o "modo protegido" (32 bits) ou "modo longo" (64 bits), ele não pode mais enviar interrupções para o BIOS. No "modo real" (16 bits, na inicialização), ele pode chamar interrupções do BIOS para ler discos, entrada do teclado etc.
Mas também tem desvantagens. Por um lado, você nem tem um megabyte de memória endereçável. SO tão moderno sair do modo real quase a primeira coisa. (Na verdade, acredito que o grub alterna para o modo protegido antes mesmo de carregar o kernel).
Mais detalhes: http://wiki.osdev.org/Real_Mode http://wiki.osdev.org/Protected_Mode
fonte
Eu tenho o mesmo proc (mas 8 núcleos) o mesmo MB (rev 3) a mesma quantidade de RAM (Kingston)
A dica do IOMMU ajudou um pouco - todas as portas podem ver um teclado USB, um hub USB de monitor e um adaptador wifi USB (Realtek), mas não há unidade flash.
Parece que essa solução me ajudou:
Você verá um arquivo no formato 0000: 00: xx.x. Execute o seguinte comando:
Substitua xx.x pelos números exibidos no seu arquivo. Ele deve desativar o ehci_hcd.
Agora você pode usar o seguinte script para desativar o ehci_hcd.
http://www.geekdevs.com/2010/04/solved-unable-to-enumerate-usb-device-disabling-ehci_hcd/
fonte
Estas etapas funcionaram para mim com um GIGABYTE 970A-DS3P e AMD-FX-8320 executando o Ubuntu 15.04
fonte
Eu tenho o mesmo FX8350 rodando em um Gigabyte 990FXA-UD3 usando o OpenSuse 13.1. A solução que funcionou para mim foi editar o gerenciador de inicialização usando o YAST, a seleção padrão (ou a seleção que você está usando para carregar o OpenSuse 13.1 no meu caso), "iommu = pt" após "exibições silenciosas".
Por exemplo:
Agora todas as minhas portas USB 2.0 e 3.0 estão funcionando e minha rede de Internet também está funcionando !. Verifique também se o IOMMU está ativado no BIOS.
fonte
Ontem, tive esse problema ao instalar o Ubuntu na minha placa-mãe ASUSTek M5A99X. Meu objetivo era reinstalar o Ubuntu a partir do pendrive no modo UEFI, para corrigir a detecção do IOMMU pelo sistema operacional (meu sistema foi instalado via modo "Legacy BIOS", achei que isso poderia ser um motivo).
Anteriormente, eu tentei isso instalando o Ubuntu a partir do pendrive. Bom com o Legacy, o UEFI sempre foi um problema - meu teclado / mouse / Wifi não estava funcionando corretamente (somente energia) ao entrar no instalador ou o instalador falhou ao carregar a interface do usuário com mensagens no console:
(…) device descriptor read/64, error -32
(para cada dispositivo USB)(…) unable to find a live medium containing a live file system
(após 5-6 minutos de leitura do stick). Este erro tem uma solução alternativa ao alterar o tipo de pendrive para "Forçar disco rígido", mas o sistema de inicialização causou outros problemas posteriormente após a instalação.Eu estava pensando que os problemas são de "Unetbootin" ou "Startup Disk Creator" - eles não são. Passei mais de 2 horas tentando todas as configurações do BIOS (não tenho
IOMMU Controller
ou não as doxHCI Handoff
meu), mas a única coisa ajudou - a atualização do BIOS para a versão mais recente com o arquivo ROM baixado do site da Asus para o modelo da minha placa-mãe. É fácil descompactar e copiar o arquivo ROM no pendrive e usar o "EZ Flash Utility" (no BIOS) para atualizar o firmware.Fazer isso corrigiu todos os tipos de erros que eu tinha; Consegui instalar e usar o Ubuntu no modo UEFI. Além disso, o IOMMU agora é detectado pelo Ubuntu magicamente, sem problemas. Isso significa que meus problemas foram causados por erros de firmware do BIOS relacionados ao suporte ao USB 2.0 / 3.0 e ao IOMMU. (se você não precisar de IOMMU, desative-o na seção "Avançado", pois isso não é algo comum).
fonte