CoolerMaster X-Craft & Linux

EDIT: Veja nos comentários o que foi postado pelo Luis. Ele indica como contornar o problema sem precisar de patch e recompilar o kernel. =)

Adquiri recentemente um case para HD externo CoolerMaster X-Craft 310 e acabei sendo pego de surpresa quando vi que ele não era devidamente reconhecido. Nos logs apareciam mensagens do tipo:

usb 7-3: new high speed USB device using ehci_hcd and address 13
usb 7-3: device descriptor read/64, error -32
usb 7-3: device descriptor read/64, error -32
usb 7-3: new high speed USB device using ehci_hcd and address 14
usb 7-3: device descriptor read/64, error -32
usb 7-3: device descriptor read/64, error -32
usb 7-3: new high speed USB device using ehci_hcd and address 15
usb 7-3: device not accepting address 15, error -110
usb 7-3: new high speed USB device using ehci_hcd and address 16
usb 7-3: device not accepting address 16, error -110
hub 7-0:1.0: unable to enumerate USB device on port 3
usb 5-1: new full speed USB device using uhci_hcd and address 20
usb 5-1: device descriptor read/64, error -32

Bateu a dúvida se o problema era com o hardware, mas isso foi descartado ao verificar que o o case+HD funcionaram no Windão. Procurando na Internet, acabei encontrando várias queixas no fórum da CoolerMaster sobre problemas com vários outros modelos. Todos eles receberam respostas (sobre o suporte a Linux) do tipo: “Unfortunately it isn’t. We apologize for any inconvenience.”

Resolvi então dar uma olhada no bugzilla do kernel, onde encontrei o bug report 8639 que fala sobre o modelo X-Craft 360 e de uma solução para o mesmo problema que eu estava tendo.

Há um e-mail enviado por Jaroslav Kysela para a lista linux-usb que explica com mais detalhes o problema e a solução. O problema parece residir no fato de que em geral os chips USB 2.0 levam cerca de 5 segundos para responderem à requisição USB_REQ_GET_DESCRIPTOR, entretanto o chip utilizado na linha X-Craft demora cerca de 10 segundos. Assim, com o timeout, não há a correta identificação do dispositivo.

Até o kernel 2.6.27-rc8 a alteração não havia sido incorporada ao código, mas provavelmente algo será feito nesse sentido numa versão futura. Até lá, o patch sugerido dá conta do serviço. O que é feito nele é a simples alteração do timeout de 5 para 12 segundos.

Testei com a versão 2.6.27-rc8, mas a alteração deve funcionar também com a 2.6.26.

PS1: O patch aqui disponibilizado não é meu (infelizmente =P), mas sim a versão que usei da segunda solução proposta pelo J. Kysela.

PS2: o usuário “tinga” usado no fórum da CoolerMaster é uma homenagem à uma grande personalidade da Unicamp =)

PS3: Correções sobre eventuais bobagens que eu tenha escrito aqui são bem vindas.

EDIT PS4: Pessoas, não adianta só aplicar o patch e esperar algo acontecer, precisa recompilar o kernel, instalar e rebootar né…Adquiri recentemente um case para HD externo CoolerMaster X-Craft 310 e acabei sendo pego de surpresa quando vi que ele não era devidamente reconhecido. Nos logs apareciam mensagens do tipo:

usb 7-3: new high speed USB device using ehci_hcd and address 13
usb 7-3: device descriptor read/64, error -32
usb 7-3: device descriptor read/64, error -32
usb 7-3: new high speed USB device using ehci_hcd and address 14
usb 7-3: device descriptor read/64, error -32
usb 7-3: device descriptor read/64, error -32
usb 7-3: new high speed USB device using ehci_hcd and address 15
usb 7-3: device not accepting address 15, error -110
usb 7-3: new high speed USB device using ehci_hcd and address 16
usb 7-3: device not accepting address 16, error -110
hub 7-0:1.0: unable to enumerate USB device on port 3
usb 5-1: new full speed USB device using uhci_hcd and address 20
usb 5-1: device descriptor read/64, error -32

Bateu a dúvida se o problema era com o hardware, mas isso foi descartado ao verificar que o o case+HD funcionaram no Windão. Procurando na Internet, acabei encontrando várias queixas no fórum da CoolerMaster sobre problemas com vários outros modelos. Todos eles receberam respostas (sobre o suporte a Linux) do tipo: “Unfortunately it isn’t. We apologize for any inconvenience.”

Resolvi então dar uma olhada no bugzilla do kernel, onde encontrei o bug report 8639 que fala sobre o modelo X-Craft 360 e de uma solução para o mesmo problema que eu estava tendo.

Há um e-mail enviado por Jaroslav Kysela para a lista linux-usb que explica com mais detalhes o problema e a solução. O problema parece residir no fato de que em geral os chips USB 2.0 levam cerca de 5 segundos para responderem à requisição USB_REQ_GET_DESCRIPTOR, entretanto o chip utilizado na linha X-Craft demora cerca de 10 segundos. Assim, com o timeout, não há a correta identificação do dispositivo.

Até o kernel 2.6.27-rc8 a alteração não havia sido incorporada ao código, mas provavelmente algo será feito nesse sentido numa versão futura. Até lá, o patch sugerido dá conta do serviço. O que é feito nele é a simples alteração do timeout de 5 para 12 segundos.

Testei com a versão 2.6.27-rc8, mas a alteração deve funcionar também com a 2.6.26.

PS1: O patch aqui disponibilizado não é meu (infelizmente =P), mas sim a versão que usei da segunda solução proposta pelo J. Kysela.

PS2: o usuário “tinga” usado no fórum da CoolerMaster é uma homenagem à uma grande personalidade da Unicamp =)

PS3: Correções sobre eventuais bobagens que eu tenha escrito aqui são bem vindas.

EDIT PS4: Pessoas, não adianta só aplicar o patch e esperar algo acontecer, precisa recompilar o kernel, instalar e rebootar né…

Popularity: 8% [?]

Related Posts

This entry was written by anselmolsm , posted on Wednesday October 01 2008at 11:10 pm , filed under Geek, pt_BR and tagged , , , . Bookmark the permalink . Post a comment below or leave a trackback: Trackback URL.

17 Responses to “CoolerMaster X-Craft & Linux”

  • caio1982 says:

    Tenho o mesmo problema mas no OSX, uma pena eu não poder alterar o módulo do kernel responsável por isso a meu bel prazer como eu faria no Linux. Tomei no ** dessa vez.

  • Alexandre Figueiredo says:

    Caio1982,

    Também tenho um Mac, o problema foi resolvido com outro drive, o do X-Craft 250 para MacOS X 10.5.4 . Se tiver problemas, e-mail me em PVT.

    Não tive problemas no Ubuntu 7.10. Bom, pelo menos para formatar usando o Gparted. Mas, formatei usando o MacOS X e depois pluguei no meu Airport Extreme via USB. O compartilhamento é via SMB, compatível com qualquer sistema operacional.

    [ ]s

  • Rogerio says:

    Amigo,

    instalei hoje o Mandriva 2009 e ja estava com o seu artigo aberto pronto pra instalar o patch quando resolvo ligar o meu HD externo CoolerMaster X-Craft 310 e pra minha surpresa, ja esta funcionando corretamente, sem precisar aplicar o patch. De acordo com a noticia de lancamento do Mandriva 2009 no guia do hardware, o kernel é o 2.6.27, me parece na sua versao final. “Em outras novidades, estão o GNOME 2.24, OpenOffice 3.0 e o Mozilla Firefox 3, além do kernel agora na versão 2.6.27. ”
    linlk: http://www.guiadohardware.net/noticias/2008-10/48EE08BE.html

    Se alguem souber que funciona diretamente em outra distribuição sem precisar de aplicar o patch, por favor poste um comentario

  • anselmolsm says:

    Ainda não testei com a release 2.6.27, mas era esperado que isso acontecesse. Que bom! Quando tive o problema estava com a 2.6.26 ainda. Em algum dos lugares que li a respeito do tema vi que isso passou a acontecer após algumas modificações (que não lembro agora) introduzidas se não me engano na 2.6.24. Provavelmente por isso funcionou no caso do Alexandre que disse não ter tido problema no Ubuntu 7.10 (kernel 2.6.22).

    Valeu pelo update! =)

  • Max says:

    também estou com o mesmo problema que você passou, mas não sei como resolver, sou muito inexperiente com relação ao ubuntu. Será que você poderia me ajudar a aplicar esse patch?

  • anselmolsm says:

    Opa, posso sim. Te mandei e-mail pra podermos ver exatamente em que parte está sua dúvida.

  • Maryana says:

    Olá! Estou tendo o mesmo problema, mas só nas máquinas de casa, na máquina do trabalho o meu XCraft 310 montou de primeira, usando kernel 2.6.24 sem patch no Ubuntu 8.04. Estranho né?

  • anselmolsm says:

    hehhe.. Então foi pós 2.6.24 (ao contrário do que escrevi que foi *no 2.6.24*).

    Bom, olhando no git do kernel, vi que a correção para o problema entrou no kernel em 17 de Outubro (http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=fd7c519dd40a0d561280bb797386143fb2026949), portanto isso deve estar solucionado no 2.6.28 sem necessidade de patches. Vou testar depois com o 2.6.28-rc3. =)

  • Jorge Sallum says:

    Caro Anselmo,

    Estou enfrentando esse problema com o X-craft, mas sou conservador e ainda não atualizei meu Ubuntu para o 8. Tenho instalado o 7.10, mas atualizei o kernel para o 2.6.22-14, sem muito sucesso. Não sei muito bem o que fazer com seu patch porque na minha versão não consta nenhum arquivo chamado hub.c. Na pasta de drivers USB tenho apenas um Kconfig e um Makefile… Enfim, agradeço qualquer informação.

    J.

  • anselmolsm says:

    Jorge,

    Você deve estar olhando no diretório /usr/src/linux-headers-VERSAO. Para aplicar o patch você precisa do código completo do kernel que, no Ubuntu, pode ser obtido através do pacote linux-source. Este pacote colocará em /usr/src/ um arquivo linux-source-VERSAO.tar.bz2 que deve ser descompactado. Assim, você terá o código do kernel onde o patch deve ser aplicado e estará pronto para compilá-lo. Se tiver dúvida em como proceder com a compilação, é bem fácil encontrar guias pela Internet afora (procure por coisas como: compilar kernel ubuntu).

    Qualquer coisa, escreva!

  • Jorge Sallum says:

    Anselmo,

    Muito obrigado! Eu fui usuário do Gentoo durante algum tempo, mas na verdade nunca necessitei de recompilar o kernel no ubuntu. Vou arregaçar as mangas aqui.

    Jorge Sallum

  • gutocarvalho says:

    O 2.6.28 ainda não vem com a correção, estou testando neste momento, o hub.c foi alterado, o patch anterior funciona até o 2.6.27.7 no 2.6.28 o patch dá erro por causa da posição das linhas, estou trabalhando em um novo patch, assim que estiver no jeito eu aviso ;)

    Minha gaveta é uma XCraft-310

    ;)

  • gutocarvalho says:

    Fiz o patch, está funcionando no 2.6.28

    — linux-2.6.28/drivers/usb/core/hub.c 2008-12-30 09:09:38.839963141 -0200
    +++ /usr/src/hub.c 2008-12-30 09:09:59.840279593 -0200
    @@ -2551,7 +2551,8 @@
    USB_REQ_GET_DESCRIPTOR, USB_DIR_IN,
    USB_DT_DEVICE <bMaxPacketSize0) {
    case 8: case 16: case 32: case 64: case 255:
    if (buf->bDescriptorType ==

    crie um arquivo no /usr/src com o nome que quiser, coloque esse conteúdo, entre no diretorio linux-2.6.28, aplique o patch com o comando patch -p1 < ../nome.patch
    compile e reinicie

  • anselmolsm says:

    Legal Guto!
    Valeu por atualizar o patch para o 2.6.28. Meu final/começo de ano foi um tanto corrido, acabei nem mexendo mais com isso. =)

  • Rogerio says:

    Pessoal

    alguem chegou a testar este hd externo no novo ubuntu 9.04 ? No meu aqui eu conecto ele, aciono o power e ele nao da nem sinal de via… achei que tivesse ate estragado, mas no Rindows ele funciona normalmente. Se alguem tiver a solucao do porque ele nao funciona no kernel do ubuntu 9.04, por favor poste aqui

  • Luis says:

    Não precisa recompilar o kernel:

    sudo su -
    echo -n “12000″ > /sys/module/usbcore/parameters/initial_descriptor_timeout

    e para tornar permanente:

    sudo su -
    apt-get install sysfsutils
    edita o /etc/sysfs.conf
    e coloca esta linha no final:
    module/usbcore/parameters/initial_descriptor_timeout = 12000

  • anselmolsm says:

    legal! Desde que achei esse patch do kernel não esquentei mais em procurar alternativa e como sempre compilo meu kernel aqui no gentoo, não foi tão traumático seguir assim. Mas de fato, para pessoal que usa kernel empacotado é bem mais tranquilo seguir esse método. valeu Luis =)

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>