Posts Tagged ‘coolermaster’

kernel 2.6.28.2 e gaveta usb coolermaster x-craft 310 funcionando em sintonia

sexta-feira, janeiro 30th, 2009

Lembra-se do post http://gutocarvalho.net/wordpress/archives/557 no qual eu relatava um bug na detecção da gaveta USB no kernel 2.6.28 , então, no mesmo post eu sugeri a aplicação de um patch no arquivo hub.c para corrigir o problema. Pois então, no kernel 2.6.28.2 a gaveta funciona sem o patch, parece que o fix foi incorporado no kernel apesar de não ter encontrado nada referente no changelog desta versão ainda não funciona. Existem muitas referências de correções no sub-sistema USB mas nem uma diretamente ligada a este ‘bug’, bom na verdade não era um bug, a controladora desta gaveta demora 10 segundos para se identificar adequadamente, até a versão 2.6.28.1 o kernel esperava por 5 segundos por uma identificação e depois disto você ganhava um timeout, o patch apenas aumentava o tempo para 12 segundos, tenho testado com os kernels mais recentes, no momento estou compilando o 2.6.28.7 e ainda sim precisei aplicar o patch.

Enfim usuários coolermaster sejam felizes sem gambiarras, aplicar o patch ainda é necessário.

[]‘s
Guto

bugfix: gaveta usb coolermaster x-craft 310 + kernel 2.6.28

terça-feira, dezembro 30th, 2008

bug

Comprei uma gaveta USB para meu HD de 500 GB há uns 2 meses aqui em Brasília, na loja ela funcionou perfeitamente no windows, detectou, montou, leu, gravou, então comprei, afinal storage devices USB não são nenhum mistério para o kernel linux. Claro realmente não são, mas o fabricante quis economizar e colocou um chipset xingling na gaveta que demora 10 segundos para se identificar, por padrão o kernel linux espera até 5 segundos, veja a saída do dmesg quando tento ligar a gaveta.

device descriptor read/64, error -32
device descriptor read/64, error -32
new high speed USB device using ehci_hcd and address 14
device not accepting address 16, error -110

pois então, dei uma pequisada (google é seu amigo) cai no forum da coolermaster ondem várias pessoas tem o mesmo problema e a resposta é sempre a mesma: – ‘não damos suporte para linux’.

http://forum.coolermaster.com/search.php?st=0&sk=t&sd=d&keywords=x+craft+linux

Continuei pesquisando bugs relacionados a gaveta e fui encontrando mais informações, desta vez no bugtrack do kernel, só que era para a gaveta 360 a minha é a 310, no mesmo bugtrack tem um link para a lista linux-usb com um patch sugerido por Jaroslav Kysela para o chipset DATASTOR8000, resolvi tentar o patch para minha gaveta e funcionou até o kernel 2.6.27.7.

http://bugzilla.kernel.org/show_bug.cgi?id=8639
http://article.gmane.org/gmane.linux.usb.general/9959

Mais pesquisa e um achei um site de um brazuca com o mesmo problema fazendo a sugestão do patch do Kysela ;)
http://www.anselmolsm.org/blog/coolermaster-x-craft-linux/

A questão é que houve muitas mudanças no hub.c entre o 2.6.27.7 e 2.6.28 e o patch anterior não batia com as linhas atuais do novo hub.c , então precisei fazer um novo patch.


--- 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 << 8, 0,
buf, GET_DESCRIPTOR_BUFSIZE,
-                                       initial_descriptor_timeout);
+                                       12000);
+                                       //initial_descriptor_timeout);
switch (buf->bMaxPacketSize0) {
case 8: case 16: case 32: case 64: case 255:
if (buf->bDescriptorType ==

Os patchs e a forma de aplicar estão em:
http://gutocarvalho.net/mediawiki/index.php/Gaveta_CoolerMaster_XCraft_310_e_Kernel_Linux

[]‘s
Guto
Compartilhe Sempre!