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…

Tags:

6 Responses to “Montar HDD da Xbox como um filesystem remoto”

  1. Joca Says:

    Caralho hein da XBOX é foda…

    você fala da videogame….rsrsrsrsrs piada…

  2. muriloq Says:

    Ah, mais um que fala “porta de rede” e “inicializar” e ainda acha que está certo…

  3. Joca Says:

    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.

  4. Mangini Says:

    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).

  5. muriloq Says:

    Boa idéia, Mangini, obrigado. Vou experimentar e depois conto o que deu.

  6. muriloq Says:

    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! ;-)

Leave a Reply