Discuta este tópico no fórum

Se este conteúdo te ajudou, deixe um presente!

quinta-feira, 27 de junho de 2013

OpenWRT: Transforme seu roteador em uma mediabox (DLNA)

Mais um artigo da série sobre o OpenWRT.

Um dos usos mais frequentes que faço do o roteador, fora a função de "roteador", é usá-lo como fonte dos arquivos multimídias da casa. O roteador fica sempre ligado para suprir a função de "acesso internet". Como ele já vai ficar ligado de qualquer forma, nada mais prático do que utilizá-lo como servidor de mídias da casa.

Claro que não faz muito sentido utilizar o roteador como uma mediabox se não adicionar um HD externo a ele. Para colocar seus arquivos de mídia, você pode copiar por um servidor de arquivos ou mesmo baixar diretamente nele. Talvez vai faltar espaço para instalar os programas necessários e você precisará estender o disco interno.

Em geral, os dispositivos que tocam as mídias de uma mediabox recebem dados pelo protocolo DLNA. Para prover DLNA em dispositivos embarcados com recursos restritos, como é o caso de NAS e roteadores, foi desenvolvido o minidlna. Contudo, é um produto simples mas funcional que utilizo mesmo para computadores de mesa com Linux. Aparentemente ele foi renomeado para readymedia. Porém, tudo que é possível encontrar sobre este programa ainda é referenciado ao minidlna.

O minidlna supre grande parte das necessidades da maioria dos usuários. Por ser desenvolvido para ambientes limitados, não faz qualquer transcoding das mídias (seu roteador não aguentaria). Tudo é enviado como está no disco. Portanto, se algumas coisas não funcionarem no seu dispositivo, reclame da sua TV. Ele busca pela capa do vídeo/álbum e as fornece ao tocador. Também utiliza o recurso de inotify do Linux para observar novos arquivos sem a necessidade de escanear novamente todo o diretório. Um diferencial é que ele também permite o envio das legendas (SRT) de seus vídeos. Todavia, por ainda não ser uma funcionalidade padrão do DLNA, a implementação de tocadores que utilizam este recurso é limitadaEm  geral, as novas TVs já adicionaram o recurso de legendas pelo DLNA. Minha experiência com uma televisão LG é fantástica: ela toca todos os formatos que já me deparei e ainda solicita as legendas.

A instalação no OpenWRT é ligeiramente simples. Se optar por instalar a interface web de gerenciamento, basta instalar luci-app-minidlna e o resto será instalado por dependência.
opkg install luci-app-minidlna

Era para aparecer naturalmente no luci em "Serviços". Se não aparecer, como foi meu caso, force o luci recriar seus menus:
rm /tmp/luci-indexcache
Se optar por gerenciamento somente pelo terminal, instale diretamente o "minidlna". O único arquivo a ser editado é o /etc/config/minidlna.
opkg install minidlna
A principal configuração é o seu diretório de mídia (media_dir). Você pode ter um ou mais diretórios. Se adicionar mais de um, todo o conteúdo destes será apresentado para seu tocador como se estivesse no mesmo diretório. Se quiser, pode também definir o local do banco de dados em uma unidade persistente, como seu HD externo. Se deixar o padrão, ele será recriado toda vez que o roteador reiniciar.

Ative o serviço e dispare-o. Pode ser tanto pela interface web ou pelo terminal:
/etc/init.d/minidlna enable
/etc/init.d/minidlna start
Uma dica: se estiver baixando torrents direteamente no seu roteador, é bom usar o recurso que separa as pastas de arquivos incompletos dos completos. Assim, você pode configurar o minidlna para somente observar os arquivos na pasta de conteúdo completo. Outra dica: dependendo do tamanho de sua biblioteca, você pode ficar sem memória RAM. Para resolver, use memória swap.

Pronto! Ele logo será descoberto na rede pelos seus dispositivos suportados. Utilizo tanto para tocar vídeos e músicas em uma TV, em um tablet e no meu PC. Muito prático.

Até a próxima!

56 comentários:

  1. Luiz,

    Tem alguma forma de eu compartilhar meus filmes pelo openwrt tipo dlna, mas pela internet, mas sem ser por ftp. Quero que eles consiguam ver os filmes sem ter que baixalos.

    ResponderExcluir
    Respostas
    1. Ademir,

      O grande problema é sua velocidade de upload. O roteador não tem condições de fazer transcoding para algo mais leve.

      Quanto ao protocolo, você pode usar qualquer coisa que possa ler o conteúdo parcialmente. Até mesmo o compartilhamento por samba pode resolver. Para usar DLNA, você poderia também configurar uma VPN com seu roteador e "entrar" na rede local.

      Excluir
  2. Teria como você fazer um post! De como criar um servidor VPN e de como se conectar nele pelo openwrt?

    ResponderExcluir
    Respostas
    1. Está na fila. Só preciso de um tempo livre para montar os cenários. Devo implementar tanto com openvpn quanto com o l2tp, suportado nativamente por diversos dispositivos como o Android.

      Excluir
  3. Parabéns pelo blog,queria tirar umas duvidas sobre o OpenWRT com você,pode ser por aqui ou por e-mail?

    ResponderExcluir
    Respostas
    1. Eduardo,

      Se não for algo "sigiloso", melhor seria por aqui. Recebi seu email mas vou responder por aqui.

      Você está tentando rodar um programa compilado para uma versão antiga do OpenWRT em uma nova versão. O programa retorna este erro:

      can't resolve symbol '__uClibc_start_main'

      Usando ldd /bin/mbox apareceu o seguinte:

      libpthread.so.0 => /lib/libpthread.so.0 (0x7789a000)
      libc.so.0 => /lib/libc.so.0 (0x7782e000)
      ld-uClibc.so.0 => /lib/ld-uClibc.so.0 (0x778c0000)
      libdl.so.0 => /lib/libdl.so.0 (0x7781a000)

      E você não tem o código fonte.

      Bem, o problema é na mudança da versão do uClibc. O seu programa foi compilado com uma versão antiga do uclibc que utilizava tal símbolo. Agora, nas versões mais novas, este símbolo não existe mais. O mais correto seria recompilar seu programa. Contudo, vc não tem o código fonte.

      Pensando em uma solução, a mais simples seria instalar a mesma versão do OpenWRT para qual seu programa foi compilado. Isto certamente funcionaria.

      No campo das tentativas, você poderia extrair a versão do uclibc da versão antiga em algum lugar e forçar seu uso. Pensei no uso das variáveis LD_LIBRARY_PATH e LD_PRELOAD. O primeiro não funciona justamente para esta biblioteca:


      root@router:/# find /tmp/root/
      /tmp/root/
      /tmp/root/lib
      /tmp/root/lib/ld-uClibc.so.0
      /tmp/root/lib/libm.so.0
      /tmp/root/lib/libgcc_s.so.1
      /tmp/root/lib/libcrypt.so.0
      /tmp/root/lib/libc.so.0
      /tmp/root/lib/libcrypt-0.9.33.2.so
      /tmp/root/lib/ld-uClibc-0.9.33.2.so
      /tmp/root/bin
      /tmp/root/bin/ash
      /tmp/root/bin/busybox
      root@router:/# LD_LIBRARY_PATH=/tmp/root/lib ldd /bin/busybox
      libcrypt.so.0 => /tmp/root/lib/libcrypt.so.0 (0x77483000)
      libm.so.0 => /tmp/root/lib/libm.so.0 (0x7745e000)
      libgcc_s.so.1 => /tmp/root/lib/libgcc_s.so.1 (0x7743b000)
      libc.so.0 => /tmp/root/lib/libc.so.0 (0x773cf000)
      ld-uClibc.so.0 => /lib/ld-uClibc.so.0 (0x774aa000)

      Note que ele ainda carrega o ld-uClibc de /tmp, e somente ela. A uClibc deve ser lida antes da variável ser interpretada. O mesmo deve valer para LD_PRELOAD. Ainda, no caso do preload, ele não está funcionando no 12.09 (https://dev.openwrt.org/ticket/13186).

      Outra alternativa é construir uma nova raiz com tudo que você precisa para seu programa e usar o chroot. Observe a estrutura que usei no exemplo acima em /tmp/root/. E depois só chamar:

      chroot /tmp/root/ /bin/ash

      Claro, trocando o ash pelo seu programa e colocando as libs que ele precisa.

      Nesta raiz, você poderia usar todas as libs da versão antiga do openwrt.
      O único problema é que as bibliotecas mais básicas como as *libc fazem chamadas de sistema para o kernel e podem não ser compatíveis com o kernel novo. Bem, é tentativa e erro mesmo.

      Se funcionar, podemos criar "links duros" usando o ln para apontar para os arquivos fora desta nova raiz e economizar espaço. Vemos isto depois e se funcionar.

      Excluir
  4. Obrigado por responder!
    Bom,vou tentar entender tudo que foi dito aqui.
    Sobre a versão,encontrei esse "trunk" https://dev.openwrt.org/changeset/29651/ acredito que ela use a versão 2.6, pode verificar pra mim? Porem,não achei onde baixa-la,quais são os riscos de usar uma versão trunk?

    ResponderExcluir
    Respostas
    1. Esta é a mudança que introduziu o suporte para o TL-MR3020. Você não tem como baixá-la pronta. Teria que baixar os fontes e apontar para este ponto. De qualquer forma, o kernel era o 3.1

      Excluir
    2. Não obtive sucesso,eu acho que vou ter que usar o kernel 2.6 mesmo.Existe alguma possibilidade de usar este kernel em meu router,customizando o sistema ou algo do tipo? Andei pesquisando e o programa roda perfeitamente com o kamizake em um ASUS WL500G.

      Obrigado!

      Excluir
    3. É bem mais "hardcore". Você precisaria refazer todos os ajustes feitos para funcionar o seu modelo na versão antiga, kamikaze. Não acho uma boa ideia.

      Não tem outra alternativa de software, especialmente com fontes?

      Excluir
    4. Sim,achei um programa que faz a mesma coisa.
      OSCAM,seu código é aberto agora preciso compilar o mesmo.

      http://www.streamboard.tv/oscam/wiki/crosscompiling

      Vou procurar como fazer essa compilação,se puder ajudar.

      Obrigado.

      Excluir
    5. Baixe o SDK para o seu roteador. É um arquivo com uns 300/400 MB com todos os pacotes "instalados". É o ideal para compilar/criar novos pacotes. Sugiro que você crie um pacote novo.

      A outra alternativa é baixar todos os fontes e recompilar do zero. Dá mais trabalho mas também funciona.

      Excluir
    6. Obrigado.

      Oque seria isso:

      /bin/oscam: line 1: syntax error: unexpected "("

      Excluir
    7. /bin/oscam deve ser um script. Se editar o arquivo, você deve ver algum parentese na primeira linha. Provavelmente ele usa algo do bash que não funciona no ash. Se for isto, teria que adaptar o script ou instalar o bash

      Excluir
  5. Luiz bom dia,

    Parabéns pelo excelente blog.
    Gostaria de saber ser você já testou o Tor no OpenWRT.
    Tenho um roteador TP-LINK TL-MR3420, pretendo instalar o OpenWRT e o TOR(https://trac.torproject.org/projects/tor/wiki/doc/OpenWRT).

    Atenciosamente,

    Leandro

    ResponderExcluir
    Respostas
    1. Já instalei mas, na época, não tinha espaço em disco e memória para a brincadeira.
      Provavelmente vai ser seu caso se não usar uma unidade USB para disco e memória.
      Não lembro que recurso faltou na época...

      Agora tenho HW para isto mas ainda não parei para fazê-lo. Tenho outras coisas na fila. Entretanto, é uma configuração bem interessante para fazer.

      Excluir
    2. Luiz bom dia,

      instalei o OpenWRT e o Tor. Utilizei a versão ATTITUDE ADJUSTMENT (12.09, r36088)
      . Fiz a expansão do disco e o aumento de memoria(swap). Realmente é fantástico o OpenWRT. O Tor funciona muito bem.
      Para a instalação do Tor eu segui esses tutoriais(https://trac.torproject.org/projects/tor/wiki/doc/Torouter/OpenWRT_setup_notes , https://trac.torproject.org/projects/tor/wiki/doc/OpenWRT , https://forum.openwrt.org/viewtopic.php?id=27354)
      Leandro pode instalar que você vai gostar (também possuo um TP-LINK TL-MR3420).

      Atenciosamente,

      Marcos - SP

      Excluir
  6. O seu blog é excelente estou aprendendo bastante coisa.

    A ultima coisa que tentei aqui foi acessar o modem em modo bridge atraves do roteador entende?

    Até achei uma pagina wiki no site mas nao consegui de jeito nenhum configurar.

    Seria possível voce fazer um post sobre esse assunto?

    Muito obrigado!

    ResponderExcluir
    Respostas
    1. O modem pode operar como roteador (ele fica com o IP e DHCP) ou como bridge (apenas como modem, o roteador atrás dele recebe o IP da internet). Neste segundo caso, o roteador precisa fazer todo o serviço de rede como solicitar o IP, autenticar. O ideal para quem tem um roteador com OpenWRT é ter o IP real pois permite muito mais recursos.

      Tudo depende do seu provedor de internet. No caso da NET (meu caso), quando o modem está em modo bridge, o IP é distribuído por DHCP. Só manter a configuração padrão da interface WAN (obter IP por DHCP) e conectar o cabo.

      Para o caso de ADSL, é mais complicado. Tem que usar o que a operadora usa. Olhe como seu modem está configurado. Se é PPPoE, PPPoA ou outra coisa. Veja o tipo e todos os parâmetros: usuário, senha, vpi, vci, etc. Anota tudo.
      No openwrt, só editar a interface wan, trocar o tipo de interface de DHCP para a desejada e replicar as configurações. E coloca o modem em modo bridge antes de aplicar as configurações.

      Excluir
  7. Luiz entao eu ja fiz isso ... pra mim nao tem sentido deixar o modem fazer o trabalho pesado se eu tenho um roteador WR2543ND né nao?

    Entao eu configurei já o roteador pra fazer tudo e modem como bridge.

    Essa parte tudo bem só que o que eu quero eh acessar o modem pra ver os parametros da minha conexao adsl como sinal margin, atenuaçao e etc.

    O meu modem é um TP-Link 8816 + TP-Link WR2543ND (com o OpenWRT).

    Só que como o DHCP do modem ta ligado nao consigo acessar pois a faixa de operacao do modem é 192.168.1.1.

    Eu vi o Wiki pra fazer isso mas ao tentar adicionar a interface modem ferrei com tudo e tive que entrar em modo de recuperação. Fiquei um pouco desesperado pq nao tava consaeguindo.

    Por isso que eu gostaria de um tutorial pra usuario leigo como eu nao fazer besteira.

    Tentei desabilitar o DHCP do modem e setar nele um IP na faixa do OpenWRT mas nao tive sucesso.

    Sera que tem jeito de ver os parametros da conexao adsl (atenuacao e etc) atraves do OpenWRT?

    ResponderExcluir
    Respostas
    1. Gostaria de poder fazer um passo a passo mas não tenho este ambiente disponível para testar.

      Você pode trocar a faixa de endereços do openwrt para 192.168.2.1 (ou qualquer outra coisa). Com isto, o 192.168.1.1 será acessível pelos clientes internos. Também, você pode acessar o modem desconectando do roteador e plugando um pc. Não use a mesma faixa de ip para a rede interna do roteador e para o modem.

      O DHCP do modem não será um problema se ele ficar conectado somente na porta WAN do roteador. Não precisa adicionar interfaces no roteador, só reconfigure a interface wan para ela usar o protocolo que seu provedor usa.

      Atenuação é coisa da camada física e não pode ser feito fora do modem. Contudo, este tipo de conf deve ainda ser atuante mesmo em modo bridge.

      Excluir
  8. Entao fiz como vc disse e alterei a pra 192.168.2.1 mas agora nao consigo acessar o modem pq ele continuou na 192.168.1.1

    Nesse link aqui http://wiki.openwrt.org/doc/howto/access.modem.through.nat#wan.by.pppoe mostra como fazer mas eu fui tentar e quae perdi o roteador :(

    Agora to inseguro. Seria pedir demais se vc desse uma trabalhada nesse gui ae e complementasse com os comandos que tenho que usar certinho?

    Se nao der vou entender.

    Ah e sim o modem em bridge mostra as infos de atenuacao e etc por isso que quero fazer isso.

    E ficar tirando o cabo pra mim seria a ultima opçao pq acho pouco pratico.

    ResponderExcluir
    Respostas
    1. Não entendi no que você pediu ajuda...

      Bem, não importa o que você for testar, sempre poderá zerar o roteador e reiniciar o processo.

      Excluir
  9. É nao tem jeito ja tentei tudo que é tutorial que vi na Internet e nada.

    Desisti mesmo ...

    Ja tive que entrar no recovery duas vezes por causa dessa insistencia em querer fazer funcionar.

    Isso era possível de forma tão simples no firmeware original que até fico sem entender como não consigo no OpenWRT que é tão mais sofisticado.

    Bom paciências pois esse foi até agora o unico ponto negativo.

    O que eu pedi ajuda foi pra entender o wiki do site:

    http://wiki.openwrt.org/doc/howto/access.modem.through.nat#wan.by.pppoe

    Pois fazendo como indica ae nao consegui obter sucesso ... Ate usei o eth0.2 que é a interface WAN no meu roteador e nada.

    Obrigado pela atenção, muito massa o seu blog e o seu trabalho.

    ResponderExcluir
    Respostas
    1. Olá Kaput,

      Não entendo esta necessidade de acessar o modem. Depois de mudá-lo para bridge, ele se torna apenas um tradutor. Não precisa acessá-lo.

      De qualquer forma, no meu caso, eu consigo alcançá-lo sem problemas. O IP dele é
      192.168.100.1 e posso pingar sem qualquer configuração especial de dentro da rede interna.

      O tutorial da página faz o seguinte:
      1) adiciona um segundo ip para sua interface wan
      2) desativa o NAT para este ip

      Acho que você não deveria precisar disto para usar PPPoE ou PPPoA autenticando pelo roteador.

      Ao menos você deveria pingar o modem.

      Excluir
    2. Ola Luiz,consegui rodar o tal programa.
      Agora me deparo com o problema no Usb-serial.
      Partindo que o adaptador esteja funcionando(Windows),eu instalei o driver (Pl2300) e as lib necessárias para que o router o reconheça.

      Segue algumas informações:

      stty -F /dev/ttyUSB0
      speed 115200 baud; line = 0;
      -brkint -imaxbel

      var$ ls -l /dev/ttyUSB0
      crw-rw-rw- 1 root root 188, 0 Jul 22 17:52 /dev/ttyUSB0

      Porem quando uso cat /dev/ttyUSB0 para verificar a porta serial o terminal trava e logo em seguida pede pra reconectar.

      Já troquei o Baud,usei o echo e nada de comunicar com o receptor\pc.

      Um amigo me disse que o problema poderia estar no group,segue o'que ele me disse:

      eu acho que está derrubando porque está errado as permissões e grupo, deveria ser algo assim:
      >> crw-rw---- 1 root dialout 188, 0 Jul 20 20:00 /dev/ttyUSB0

      configure a velocidade e parametros para fazer o teste no shell:

      >> stty -F /dev/ttyUSB0 57600 cs8 -cstopb -parity -icanon min 1 time 1 eol ^D

      corrija as permissões da porta com:
      >> chmod 660 /dev/ttyUSB0

      >> chown root:dialout /dev/ttyUSB0

      faça o teste de envio de mensagem para a outra ponta:

      >> echo 'Teste' >/dev/ttyUSB0

      Porem estou com esse problema:

      /$ chown root:dialout /dev/ttyUSB0
      chown: unknown user/group root:dialout

      O'que você acha?






      Excluir
    3. Me atualiza ai. Você está conectando uma adaptador usb-serial no roteador? É isto?

      Primeiro acho que o melhor programa para serial é o minicom. Se puder instalar, ele é bem mais intuitivo.

      Excluir
  10. Luiz, o que pode ter de errado que o luci-app-minidlna por mais que eu tenha adicionado várias pastas do disco USB conectado, ele exibe apenas a primeira delas?

    Grato pelas dicas!

    ResponderExcluir
    Respostas
    1. Márcio,

      Você precisa limpar o banco de dados ao trocar as pastas. Se você usa o caminho padrão, ele já fica em uma área volátil e será zerado ao reiniciar o roteador.
      Caso contrário, ou se não quiser reiniciar o roteador, apague o arquivo files.db (acho que é esse nome) e reinicie o serviço.

      Olhe também o arquivo de configuração do minidlna, que fica em /etc/config/minidlna. Pode ter algum bug na interface.

      Em geral eu não uso mais de uma pasta. Prefiro usar subpastas ou link para outras pastas. A configuração com múltiplas pastas junta os seus conteúdos e pode ficar um pouco bagunçado ao navegar.

      Excluir
  11. Luiz, instalei o openwrt no meu ap tplink tl-wr941nd, baixei o pacote luci p/ ter acesso a interface web. Minutos depois, fui experimentar outra interface: a do lighttpd, mas não consegui instalar por falta de espaço em disco. removi o Luci e tentei novamente, mas continuou com erro de espaço em disco. resolvi voltar a instalar o Luci,e o problema de espaço voltou a aparecer. Resumindo: estou sem a interface web E sem espaço pra colocar mais nada. Alguma sugestão/dica, de como tratar esse problema. Não consigo identificar o que posso remover nem como faze-lo (rm ou opkg remove).

    ResponderExcluir
    Respostas
    1. O luci, em geral, vem junto com a firmware. Se for o caso, removê-lo não libera espaço.
      Com a falta de disco, seu banco de dados dos pacotes pode estar inconsistente.
      A melhor sugestão é fazer o backup dos dados e zerar o roteador.

      De qualquer forma, só adianta remover os arquivos que não estiverem presentes na firmware original. Você pode olhar a firmware original no dir /rom/. Tudo que estiver em / e não em /rom, se apagado, libera espaço. Tudo que não estiver em / mas está em /rom ainda ocupará espaço.



      Excluir
  12. oi Luiz, maravilha teus tutos! estou aprendendo muito com eles. ótimo trabalho, parabéns!
    o motivo da minha aventura com os teus tutos foi para deixar meu HD de 2tb direto no meu roteador, um wr1043nd, servindo como um "servidor" para a família e DLNA para meu BluRay.
    estou há 5 dias "apanhando", instalando e desinstalando um monte de vezes os firmwares! hehehe jah tive o problema da WAN não funcionar, de quase brickar e de quebrar a cabeça com "detalhes", como um espaço a mais em uma configuração q não funcionou. mas estou achando bem legal, e aprendendo bastante! ^^
    agora acho q cheguei onde quero! instalei o "Attitude Adjustment - 12.09", os packs da USB, do NTFS, samba e o minidlna. antes de sair de casa para trabalhar agora meio dia testei pelo notebook e acessei o HD, e o notebook reconhece o DLNA, apesar de não ter nenhum arquivo ainda.

    MINHA PERGUNTA: o HD, mesmo colocando ele direto no roteador, sem particionar ele para ajudar no swap e como local de instalar apps do openwrt (o que não sei se vou conseguir manter, pois jah está SOMENTE com 30% livre, e ainda faltam alguns "programinhas" =/) está CHEIO de pastas... isso eh normal? porque o router colocou esse monte de pastas? não me recordo de todas, mas lembro q tem /BIN e /MNT... elas tem q ficar ali no HD mesmo?então sempre que eu acessar em um PC vou ver aquele monte de coisas?

    desculpe pela nubice, mas nunca tinha mexido em nada de linux, estou aprendendo agora. ^^

    ResponderExcluir
    Respostas
    1. Legal Renato,

      Pastas? Acho estranho o /bin, /mnt etc são pastas do openwrt e, na teoria, não ficariam no seu disco. A raiz do seu roteador deve ter algo como:

      root@router:~# ls -la /
      drwxr-xr-x 1 root root 1024 Apr 28 20:52 .
      drwxr-xr-x 1 root root 1024 Apr 28 20:52 ..
      drwxr-xr-x 1 root root 1024 Jul 21 15:26 bin
      drwxr-xr-x 7 root root 1240 Sep 6 22:43 dev
      drwxr-xr-x 1 root root 1024 Aug 24 19:07 etc
      drwxr-xr-x 1 root root 1024 Mar 23 2013 lib
      drwxr-xr-x 1 root root 1024 Apr 28 21:10 mnt
      drwxr-xr-x 11 root root 1024 Apr 28 20:15 old
      drwxr-xr-x 11 root root 1024 Apr 28 20:52 overlay
      dr-xr-xr-x 71 root root 0 Dec 31 1969 proc
      drwxr-xr-x 16 root root 223 Mar 23 2013 rom
      drwxr-xr-x 1 root root 1024 Sep 9 15:03 root
      drwxr-xr-x 1 root root 1024 Apr 29 00:31 sbin
      drwxr-xr-x 11 root root 0 Dec 31 1969 sys
      drwxrwxrwt 11 root root 360 Sep 22 16:56 tmp
      drwxr-xr-x 1 root root 1024 Mar 14 2013 usr
      lrwxrwxrwx 1 root root 4 Mar 23 2013 var -> /tmp
      drwxr-xr-x 1 root root 1024 Mar 14 2013 www

      Mas não em um disco secudário. Isto aconteceria se você usasse ele para expandir o disco. Ai você teria algo como:

      root@router:/overlay# ls -la /overlay/
      drwxr-xr-x 11 root root 1024 Apr 28 20:52 .
      drwxr-xr-x 1 root root 1024 Apr 28 20:52 ..
      drwxr-xr-x 2 root root 1024 Jul 21 15:26 bin
      drwxr-xr-x 17 root root 1024 Aug 24 19:07 etc
      drwxr-xr-x 7 root root 1024 Mar 23 2013 lib
      drwxr-xr-x 3 root root 1024 Apr 28 21:10 mnt
      drwxr-xr-x 11 root root 1024 Apr 28 20:15 old
      drwxr-xr-x 3 root root 1024 Sep 9 15:03 root
      drwxr-xr-x 2 root root 1024 Apr 29 00:31 sbin
      drwxr-xr-x 7 root root 1024 Mar 14 2013 usr
      drwxr-xr-x 2 root root 1024 Mar 14 2013 www

      Que são somente as pastas com modificações. Esta cópia é feita em um dos passos do post que explico como expandir o disco interno (acho que usei um tar). Talvez você executou sem saber.

      Sim, você logo ficará sem espaço em disco. Logo vai ser uma necessidade usar uma partição do disco ou mesmo um pendrive (com um HUB usb para ainda ligar o HD).

      Excluir
  13. Procurei por minidlna na interface web e tentei instalar por lá. Obtive o seguinte erro:
    Installing minidlna (1.0.19-1) to root...
    Downloading http://downloads.openwrt.org/backfire/10.03.1/ar71xx/packages/minidlna_1.0.19-1_ar71xx.ipk.
    Installing libexif (0.6.19-1) to root...
    Downloading http://downloads.openwrt.org/backfire/10.03.1/ar71xx/packages/libexif_0.6.19-1_ar71xx.ipk.
    Installing libjpeg (6b-1) to root...
    Downloading http://downloads.openwrt.org/backfire/10.03.1/ar71xx/packages/libjpeg_6b-1_ar71xx.ipk.
    Installing libsqlite3 (3070701-1) to root...
    Downloading http://downloads.openwrt.org/backfire/10.03.1/ar71xx/packages/libsqlite3_3070701-1_ar71xx.ipk.
    Installing libffmpeg (0.5.4-2) to root...
    Configuring libjpeg.
    Configuring libexif.
    Configuring libsqlite3.
    Collected errors:
    * verify_pkg_installable: Only have 336kb available on filesystem /overlay, pkg libffmpeg needs 511
    * opkg_install_cmd: Cannot install package minidlna.


    ....e agora. Como aumento essa memória?

    ResponderExcluir
    Respostas
    1. Estava em link no artigo acima em "....os programas necessários e você precisará <<>>."

      http://luizluca.blogspot.com.br/2013/03/openwrt-expandindo-o-espaco-do-disco.html

      Excluir
  14. Luiz, tenho o openwrt em um tp-link wr1043nd (versão Attitude Adjustment 12.09-rc1, r34185) e miniDLNA v.1.0.24-1.
    As legendas não funcionam com minha SmartTV Philips. Você sabe se teria o mesmo problema com a SmartTV da Samsung 40F5500 (é a linha de TVs de 2013) ?

    Leonardo.

    ResponderExcluir
    Respostas
    1. Só usei nas LG. Você pode investigar sobre estas questões procurando pelo minidlna e sua TV. Qualquer coisa que vive encontrar sobre ele vale para também quando ele roda no roteador. Se esta TV funcionar só com uma versão mais nova do minidlna, eu já tenho compilada para a arquitetura do seu roteador

      Excluir
    2. Luiz, obrigado pela resposta. Já pesquisei a beça em fóruns etc e o mais próximo que cheguei do meu cenário foi esse artigo do VivaoLinux (http://www.vivaolinux.com.br/artigo/MiniDLNA-Servidor-de-midia-descomplicado?pagina=1) onde o prognóstico parece ser favorável, porém, o miniDLNA foi instalado numa distro completa do linux e não no openwrt. Por ele ser bem leve imaginei mesmo que devesse valer tb para a versão do openwrt. Acho que vou ter que descobrir da maneira mais difícil pois já comprei a TV hehe. Meu roteador ta bastante igual ao que você traz nos seus tutoriais do openwrt: tem swap, hd externo via USB, samba, transmission (separação de pastas complete e incomplete) e miniDLNA. Não encontrei nenhuma menção à versão do miniDLNA com a TV Samsung nas minhas buscas mas fiz testes com meu galaxy S3 e o Player de Video que vem com ele e rolou com legenda com a versão que já tenho hoje do miniDLNA instalado no roteador. Você poderia me enviar esse pkg para eu fazer o upgrade depois ? Posso te adicionar no facebook para te passar meu email por la ?
      Abraços,

      Leonardo.

      Excluir
    3. Está aqui os pacotes que compilei (não só o minidlna). É um repo openwrt.

      http://luizluca.github.io/openwrt/12.09/ar71xx/Packages

      Não é de grande valia o contato pelo facebook. Minha frequência de acesso beira a uma dezena por ano.

      Excluir
  15. Luiz, obrigado pelo link.
    Não consigo navegar pela estrutura. A URL baixa um "packages.bin" é isso ?
    Abri ele no editor de texto e vi o miniDLNA e outros pacotes. Devo instalar esse bin como se fosse uma atualização de firmware do openwrt ?
    Outro ponto, vi seu tutorial sobre fazer o upgrade do openwrt. Tenho muitos scripts além das configurações de swap e de montagem do HD externo. Você acha que compensa atualiuzar do 12.09-rc1 para o 12.09 ? Existem muitas duferenças significantes ?

    Leonardo

    ResponderExcluir
    Respostas
    1. Luiz desconsidere a dúvida sobre o packages...já consegui fazer o upgrade para a versão mais atual do miniDLNA do seu repositório. Compensa eu faer o upgrade de todo o firmware ?

      Excluir
    2. Só do que te interessa. Não faz sentido atualizar tudo. Devo escrever sobre este repo que fiz e manter atualizações em novos posts.

      Excluir
  16. Ola Luiz, boa noite..
    Eu tenho um TP-Link WR2543ND Dual Band 450Mb, eu gostaria de fazer o compartilhamento de videos e musica que estão no meu PC sem ter que ligar um HD externo no Moden. A algum tempo atraz eu fazia isto com um programa da SAMSUNG o AllShare mais este programa parou de funcionar no Win 8 e a SAMSUNG parou com as atualizaçoes dele, na verdade trocou pelo Samsung Link. O AllShare era muito simples e pratico era so instalar escolher as pastas de compartilhamento e qual era qual (video, musica, etc..) e depois de feito isso era visualizava no outro pc, smartv, celular, etc.

    ResponderExcluir
    Respostas
    1. Guilherme,

      Provavelmente sua TV deve aceitar vídeos por DLNA. Instale um servidor DLNA no seu pc que deve funcionar. Porém, isto está um pouco fora do tópico. Não tenho uma TV samsung e nem uso DLNA no windows.

      Excluir
  17. Desculpe a minha ignorância, mas poderia explicar melhor quais são as configurações necessarias a serem feitas no roteador? é preciso instalar algum outro firmware no roteador?

    ResponderExcluir
    Respostas
    1. Olá Anônimo,

      Estas configurações são para um roteador com OpenWRT. Sim, você precisa trocar a firmware do fabricante.

      Excluir
  18. Estou tendo algum problema com o minidlna, ele aparentemente não encontra a interface de rede, e consequentemente não é encontrado na rede pela minha smarttv da samsung.

    Meu equipamento é um TP-Link TL-MR3040 v1 rodando OpenWrt Barrier Breaker 14.07 / LuCI Trunk (0.12+svn-r10530) com o minidlna 1.1.3-1, na usb usando um hd externo, conforme teus outros tutoriais.

    Seguem abaixo o log e o arquivo de configuração criado pela interface luci, espero que possa me ajudar.

    root@NAS:/# cat var/log/minidlna.log
    [2015/02/10 19:40:10] minidlna.c:1014: warn: Starting MiniDLNA version 1.1.3.
    [2015/02/10 19:40:10] minidlna.c:1053: warn: HTTP listening on port 8200
    [2015/02/10 19:40:10] getifaddr.c:109: error: Network interface eth0 not found
    [2015/02/10 19:40:10] getifaddr.c:109: error: Network interface wlan0 not found
    [2015/02/10 19:40:12] getifaddr.c:109: error: Network interface wlan0 not found
    [2015/02/10 19:40:12] getifaddr.c:109: error: Network interface wlan0 not found
    [2015/02/10 19:40:12] getifaddr.c:109: error: Network interface wlan0 not found
    root@NAS:/# cat /etc/config/minidlna

    config minidlna 'config'
    option enabled '1'
    option port '8200'
    option friendly_name 'OpenWrt DLNA Server'
    option log_dir '/var/log'
    option inotify '1'
    option notify_interval '900'
    option serial '12345678'
    option model_number '1'
    option root_container '.'
    option album_art_names 'Cover.jpg/cover.jpg/AlbumArtSmall.jpg/albumartsm
    all.jpg/AlbumArt.jpg/albumart.jpg/Album.jpg/album.jpg/Folder.jpg/folder.jpg/Thum
    b.jpg/thumb.jpg'
    list media_dir '/mnt/usb-dados/filmes/dlna'
    option db_dir '/etc/minidlna'
    option interface 'eth0,wlan0'

    ResponderExcluir
    Respostas
    1. Felipe,

      Normalmente a interface é a br-lan:

      option interface 'br-lan'

      Por padrão, a eth0 e wlan0 ficam escravisadas abaixo da br0 e sem acesso direto (e possivelmente a eth0 com vlan como eth0.1 e eth0.2).

      Excluir
    2. Não costumo ter a br-lan disponível, já que só costumo usar esse equipamento na rede cabeada, mas modifiquei pra ficar disponível e também não funcionou.
      Também tentei as vlan eth0.1 e eth0.2, tendo o mesmo resultado negativo.

      Excluir
    3. Felipe, você consegue mandar a saída do ifconfig?

      Outra coisa, tenta uma única interface. Você também pode conseguir mais info rodando o "minidlna -d -c /tmp/minidlna.conf" depois de parar o serviço. Talvez tenha mais alguma informação.

      Excluir
  19. Luiz consegui fazer porem um video 720p na minha tv ficou travando isso pode ser wifi que não esta dando conta.
    o sinal do wfi esta bom.

    ResponderExcluir
    Respostas
    1. Sim, pode ser isto. A minha experiência com a Wifi da TV não é boa. Se puder testar com o cabo, vai conseguir descobrir se é limitação da wifi ou do roteador mesmo.

      Excluir
  20. Boa tarde Luiz, primeiramente quero agradecer a ajuda que tem me dado. Bom eu consegui configurar as particões, overlay, swap no pendrive, e o hd externo tudo certinho, instalei o minidlna configurei tudo certinha, só estou com um problema que acredito que seja fraqueza minha mesmo, a TV enxerga o dlna, meu note enxerga uma pasta openwrt dlna server "com o pinguim" abre as pastas apesar de não ter nada dentro ainda, e não deixa carregar nada lá para dentro, isso pelo windows. O problema e que com o android também não acho nada, e instalei no virtualbox o opensuse, e também não enxerga. Tenho que instalar algum software no android para isso, e no linux eu deveria enxergar o dlna na rede "obs: a rede do suse esta configurada e funcionando".

    ResponderExcluir
    Respostas
    1. Fabiano,

      Se o media_dir aponta para um local onde tem mídias, deveria aparecer. Você pode até rodar o minidlna na mão, acrescentando a opção "-d" para rodar em debug.

      Ficaria algo como:

      killall minidlna
      /usr/bin/minidlna -d -f /tmp/minidlna.conf

      Ah, você também pode instalar o minidlna no opensuse e brincar para entender como ele funciona e se é compatível com seus dispositivos. No vlc atual do android deve funcionar.

      Excluir
  21. ola luiz
    quero disponibilizar meu dlna server para acesso remoto
    essa conf é possivel?
    como proceder?
    abraços

    ResponderExcluir
    Respostas
    1. Paulo,

      Complicado. Culpa mais do DLNA e seus clientes.

      O maior problema é que a localização das fontes DLNA (e de outros protocolos) é feita por descoberta na rede local. Você poderia fazer uma VPN na camada 2 (enlace) mas ela tem suas limitações como não rodar em Android.

      Se tiver um cliente que possa informar o caminho, bastaria liberar a porta 8200.

      Eu também quis fazer isso e consegui usando algumas artimanhas, com OpenVPN (L3) e o VLC (android).
      1) abro na rede local o vlc e salvo a pasta raiz do DLNA como favorito (vai ser algo como upnp http://router:8200/ctl/ContentDir&ObjectID=0
      2) vou para um local remoto
      3) conecto pela VPN (camada 3). Apesar de não conseguir localizar o servidor, tenho a pasta nos favoritos
      4) peço ao VLC para abrir a pasta salva nos favoritos.
      5) assisto o conteúdo (limitado a taxa de upload + overhead da VPN ;)

      Excluir