Montar HDD da Xbox como um filesystem remoto
Saturday, February 28th, 2009Depois 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…




