Montar HDD da Xbox como um filesystem remoto
Depois de algumas horas quebrando a cabeça, resolvi um problema técnico que me atormentava. Estou documentando a solução pro caso de alguém (inclusive eu) precisar dela mais tarde. Se você tem medo de termos técnicos e sopa de letrinhas, fuja.
Não incluí links porque é trivial encontrá-los procurando pelas palavras chave que uso.
XBMC
Há vários anos eu uso a Xbox (o primeiro modelo mesmo, não a 360) mais como um media center do que como um videogame. A Xbox fica ligada na TV da sala, instalei nela o Xbox Media Center (XBMC que agora existe para Mac, Linux e Windows também), e acessa pela rede (usando SMB, “compartilhamento de arquivos do Windows”) os vídeos armazenados no PC (um Ubuntu rodando Samba).
Download no PC
Os vídeos são baixados automaticamente, via torrents que chegam através de RSS Feeds, filtrados e transferidos usando o uTorrent (que roda perfeitamente sobre o Wine). As legendas são obtidas automaticamente usando um script em python, e os arquivos (de vídeo e legenda) são renomeados automaticamente usando o excelente script tvrenamer. Assim não é preciso aquela rotina de passar cinco minutos ajeitando o vídeo, legendas e renomeando arquivos antes de assistir.
HDD Grande na Xbox
Recentemente troquei o HDD da Xbox por um muito maior (300 GB). Para isso tive que fazer o update do firmware do modchip do videogame (usei o Slayer’s Xbox Tools 2.7). Desde então resolvi armazenar os vídeos não no PC, mas no HDD da Xbox mesmo.
O problema
Mas eu não deixo a Xbox ligada 24×7, logo gostaria que o download continuasse sendo no PC, mesmo porque não quero perder meu esforço de automatização. A idéia então é fazer com o que o PC transfira os arquivos para o HDD da Xbox.
O XBMC é um cliente de SMB, mas não é um servidor, ou seja, não compartilha os arquivos do próprio HDD com outros computadores. Entretanto, ela possui um servidor de FTP. O problema é que os scripts como o tvrenamer assumem que os arquivos são locais, ou seja, não conseguem renomear sobre FTP, e sincronizar os arquivos dos diretórios usando FTP é algo bem desajeitado.
A Solução
Configurei a Xbox para usar um IP fixo, e habilitei o FTP server do XBMC. Então usei o sensacional curlftpfs (um file-system de espaço de usuário - FUSE - que usa a biblioteca CURL para montar sites de FTP). Com o curlftpfs o FTP da Xbox aparecem no Linux como como se fossem um diretório comum:
mkdir /xbox
chgrp fuse /xbox
sudo adduser muriloq fuse
curlftpfs -o user=xbox:password ftp://192.168.254.50/F /xbox
Problema: Erro ao renomear arquivos
O servidor de FTP do XBMC, o FileZilla, não permite que algumas operações sejam feitas na raiz do FTP, onde ficam as pastas correspondentes às partições da Xbox. Assim, se você montar apenas ftp://192.168.254.50/ você NÃO vai conseguir fazer um monte de coisas (inclusive renomear arquivos ou rodar o rsync). É preciso montar o drive direto, com ftp://192.168.254.50/F Eu tive que abrir o código fonte do curlftpfs e fuçar muito nos logs para descobrir isso.
Mais Problema: Erro ao rodar o rsync
Rodando o rsync eu encontrei erros do tipo
rsync: rename “/xbox/videos/.video.avi.B6uPMV” -> “video.avi”: Operation not permitted (1)
Nesse caso é um bug da versão do curlftpfs que usei, a 9.6.1:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=461455
Disseram que consertaram na 9.6.2-2, mas a instalei aqui e o problema continua.
Quando tiver tempo experimento mais um pouco…
February 28th, 2009 at 11:36 pm
Caralho hein da XBOX é foda…
você fala da videogame….rsrsrsrsrs piada…
March 1st, 2009 at 10:54 am
Ah, mais um que fala “porta de rede” e “inicializar” e ainda acha que está certo…
March 2nd, 2009 at 8:10 am
Se se junta a muitos outros que conheço..rsrsrs
Da Palio, Da HD, Da Playstation, Da PSP…. piada pronta… riso facil… e ainda acha que esta certo…
Quanta Soberba.
March 2nd, 2009 at 11:53 am
Murilo, você tentou o fmirror? Tem no repositório do Ubuntu (sudo apt-get install fmirror) e funciona muito bem. A sintaxe é:
fmirror -u login -p “senha” -s ftpserver -r diretorioremoto -l diretoriolocal
Funciona parecido com o rsync (à exceção do cálculo dos hashs, que no rsync é bem otimizado - mas que no seu caso só atrapalha porque os hashs são computados no computador local e não no remoto).
March 2nd, 2009 at 12:25 pm
Boa idéia, Mangini, obrigado. Vou experimentar e depois conto o que deu.
March 25th, 2009 at 9:43 am
Joca: seu uso do pronome oblíquo na frase “Se se junta a muitos outros que conheço” está errado. Imagino que você queria dizer “Você se junta a muitos outros que conheço”.
Para escrever isso de forma coloquial é aceitável dizer “Cê se junta a muitos outros”, mas a construção “Se se junta” tem significado completamente diferente e não se aplica na sua frase, já que implica na idéia de condição.
Compare com as frases “Se se juntar a fome com a vontade de comer” e “Se juntar-se a fome com …”. Outro erro comum é achar confundir o segundo exemplo com “Se juntasse…” e com “Você juntasse…”
Perdoe-me a soberba!