domingo, 30 de outubro de 2016

Raspberry Pi - Imagem a Preto e Branco com RCA

Nada melhor para tentar dar vida a um velho "aquário" Grundig de 35cm que não se ligava há anos e colocá-lo como display de um Raspberry Pi para entreter petizes.


Problema: A televisão apenas tem entrada SCART e a saída analógica do Raspberry Pi é RCA... Existem vários adaptadores SCART para RCA [1], mas neste processo acontecia magia...

Verificar tudo:
Rpi » RCA>SCART  » "Aquário" - Imagem a Preto e Branco...
Rpi » RCA>SCART  » TV Recente - Imagem a Cores

Conclusão, o SCART da TV velha deixou de dar a cores, mas...
Box TV » SCART » "Aquário" - Imagem a Cores

Parece que o problema reside na forma como o Raspberry Pi envia os sinais de vídeo composto (RCA) que por defeito é NTSC e o "aquário" apenas suporta PAL (daí funcionar na TV Recente). [2] e [3]

Assim, é necessário aceder ao ficheiro config.txt localizado na partição de arranque (boot) do cartão e descomentar ou adicionar a linha:
sdtv_mode=2

Os modos sdtv suportados são:  0 NTSC, 1 NTSC Japão, 2 PAL, 3 PAL Brasil.


[1] - Adaptadores SCART/RCA no Aliexpress
[2] - https://www.raspberrypi.org/forums/viewtopic.php?f=26&t=17074
[3] - http://elinux.org/R-Pi_Troubleshooting#Composite_displays_only_black_and_white_image

sábado, 22 de outubro de 2016

Servidor de Impressão Raspberry Pi

Utilização de um Raspberry Pi 2B como servidor de impressão de uma impressora HP Deskjet 1510 PSC (Print Scan Copy).

A partir de uma imagem Raspbian Jessie Lite é possível configurar todo o sistema remotamente por SSH e browser.

Há muitas informações úteis na página do projeto debian [1] permitem perceber melhor o funcionamento.

Instalação e Configuração do CUPS

sudo apt-get install cups hplip

Para configuração remota via web é necessário ativar o acesso à interface web através da alteração da configuração Listen e acrescentar os endereços que têm acesso à mesma (neste caso a rede 192.168.0.*):
sudo nano /etc/cups/cupsd.conf
(...)
ServerAlias *
Listen *:631
(...)
# Restrict access to the server...
<Location />
  Order allow,deny
  Allow 192.168.0.*
</Location>

# Restrict access to the admin pages...
<Location /admin>
  Order allow,deny
  Allow 192.168.0.*
</Location>

Atualização: A diretiva ServerAlias * permite aceder ao servidor CUPS através do IP ou do nome.

Por defeito o CUPS permite a autenticação a utilizadores do SystemGroup [2] e o utilizador pi não pertence a nenhum destes grupos.

Adicionar pi ao grupo lpadmin.
sudo usermod -a -G lpadmin pi

Para confirmar os grupos do utilizador:
groups pi
pi : pi adm dialout cdrom sudo audio video plugdev games users input netdev spi i2c gpio lpadmin

Para reiniciar o serviço após alterações às configurações é necessário:
sudo systemctl restart cups.service 

A partir daqui é possível configurar uma nova impressora via browser acedendo a:
http://raspberrypi:631

Ao adicionar uma impressora é reconhecida a impressora e de seguida é necessário escolher o driver da lista muito numerosa, neste caso:
HP PSC 1510 Series, hpcups 3.14.6

É necessário ativar a partilha da impressora aquando da instalação ou então mais tarde na configuração CUPS (Share printers connected to this system)

A partir daqui qualquer máquina na rede com o CUPS (normalmente qualquer Linux com sistema de impressão, por exemplo, ubuntu, Mint, etc) vai ver a impressora sem ser necessário qualquer instalação.

Resolução de Problemas

1. Ao aceder através do nome do servidor na porta 631 dá erro Bad Request
É necessário utilizar a diretiva ServerAlias *, que permite aceder ao servidor CUPS através do IP ou do nome.

2. Quando se manda imprimir o trabalho não é enviado
Confirmar se a impressora não está parada ou com erro através da página de administração: https://raspberrypi:631/printers

3. Debug
Pode ajudar alterar a diretiva LogLevel de warn para debug de forma a ter mais detalhes nos logs:
sudo less /var/log/cups/error_log

Referências

quinta-feira, 20 de outubro de 2016

Kodi e CEC - Debug e alteração de teclas do comando

Com um Raspberry Pi a correr o OpenELEC, o KODI reconhece o CEC enviado pela televisão. Contudo, não há qualquer tecla no comando que faça voltar para atrás, o que traz alguns inconvenientes na interação com o KODI.

Uma forma para fazer isso trata-se em colocar uma reafetação de inputs do CEC de forma a verificar o que está a ser pressionado, se está bem, se há outras teclas, etc. Foi o que descobri no blog de Steven Occhipinti [0].

É necessário ter acesso à pasta ~/.kodi/userdata/keymaps/ e aí colocar o ficheiro remote.xml [1] que permite fazer o debug e reiniciar o openelec.

Por SSH (a senha de root é openelec)
ssh root@openelecIP
cd ~/.kodi/userdata/keymaps/

wget https://gist.github.com/stevenocchipinti/42f2eca2a9f04ed9e52f/raw/d9fbf3c20edbff85d71b99b47d202d8a0ab1a8d9/remote.xml
reboot

Ao arrancar, de cada vez que se pressionar uma tecla aparece uma notificação indicando que ação foi desencadeada.

No meu caso todas as teclas que funcionam estão corretas e não há qualquer tecla nova. No entanto, reparei que quando pressionava rapidamente tecla verde e tecla amarela, aparecia a ação Title.
Como esta ação não serve para muito, poderia utilizar esta forma para ativar a ação Back que permite voltar para trás e dá muito jeito na interação com o kodi.

Assim, para reafetar a ação da tecla Title, resta copiar um remote.xml original, encontrar a ação Title e trocar para Back.

Por SSH:
ssh root@openelecIP
cd ~/.kodi/userdata/keymaps/

cp /usr/share/kodi/system/keymaps/remote.xml .
nano remote.xml
(...)
      <rootmenu>PreviousMenu</rootmenu>
      <title>Back</title>

      <info>Info</info>
(...)

É possível então alterar todas as entradas da ação Title para que faça execute Back.
No nano para procurar CTRL+W e pode procurar-se por <title> e ir substituindo.

Após guardar e reiniciar, a conjugação de teclas verde/amarela passou a funcionar como o voltar para trás, permitindo voltar ao menu principal, por exemplo.


[0] - http://blog.stevenocchipinti.com/2015/04/04/configuring-a-hdmi-cec-remote-in-kodi/
[1] - remote.xml - https://gist.github.com/stevenocchipinti/42f2eca2a9f04ed9e52f