Migrar Live Mail para Thunderbird

Na sequência das migrações que tenho feito, tem me aparecido algumas maquinas configuradas com o Windows Live Mail! Se, como já é do vosso conhecimento que não nutro nenhum carinho especial pelo Outlook, recentemente nutro muito menos pelo Live Mail. Se o quiserem defender, tentem “trabalhar” com uma conta que tem emails desde 2009, e que recebe na ordem dos 100/200 mails por dia, aplicar filtros de spam, etc. E quando rebenta, tentem que ele simplesmente volte a abrir….

Bem, mas nem tudo é mau, felizmente o Windows Live Mail guarda os emails em formato .eml, divididos pelas respectivas pastas de envio e recepção. Assim é fácil todo o procedimento de importação para qualquer outro cliente. Em Windows7/8.x/10 a pasta é a seguinte:

C:\Users\<user>\AppData\Local\Microsoft\Windows Live Mail

Partindo do principio que estejam na mesma máquina, abrir o Thunderbird e instalar o add-on ImportExportTools. A seguir deverá ser necessário reinicia-lo.

Ao abrir, aconselho a seleccionar já a primeira pasta a importar, que será a do Inbox/A receber. Agora ir ao menu Import/Export > importar todos os ficheiros eml de uma directoria > incluir subdirectorias e seleccionar a directoria Inbox/A receber dentro da directoria acima descrita. O tempo de importação deverá depender do tamanho da Inbox. Aconselho sempre a irem fazendo um arquivo por pastas, por anos, e a comprimir pastas sempre que o TB vos perguntar se pode.

Importar cada uma das restantes pastas Sent/Draft/Deleted, etc seguindo os mesmos procedimentos, seleccionado primeiramente a  pasta de destino, e depois importar da respectiva pasta de origem.

Um dos problemas que tive recentemente foi alguns dos utilizadores terem milhares de contactos que eram precisos importar. Para o fazer aconselho em primeiro lugar a exportação a partir do Live Mail em formato vCard (.vcf) para dentro de uma pasta, a partir de Contactos > Exportar > Cartão de Visita (.vcf).

Outra das dificuldades é a importação de um ou mais vCard’s pois o Thunderbird não importa tal como os CSV, mas  sim, cria uma “lista de distribuição” por cada um deles, para além de só os importar um a um. Então, para importar a pasta de vCard’s criada pelo Live Mail, aconselho vivamente a utilização deste add-on MoreFunctionsForAddressBook (que está disponível neste sítio) que não está disponível directamente na plataforma da Mozilla.

Depois de instalado e de reiniciar novamente, abrir o Livro de Endereços, seleccionar uma lista de endereços, de preferência a o Livro Pessoal de Endereços, e dentro do menu Ferramentas > MoreFunctionsForAddressBook > Acções para os contactos > Importar vCard/vcf, e seleccionar a pasta para onde foram exportados os contactos em formato vCard do Live Mail, e seleccionar todos (CTRL+A/T).

Desta fora consegui fazer uma migração total, sem perca de dados, do Live Mail para Thunderbird, depois de obviamente configurar primeiramente a conta de correio electrónico.

Migrar Outlook para Thunderbird

Acho que este tutorial vai ajudar muita “galera” por aí. Estão a achar estranho estar a falar PT-BR certo? Mas há uma boa razão para tal, e é o agradecimento que tenho de fazer ao Claudio Maciel, autor no br-open.com. Deste que o Thunderbird deixou de importar automaticamente do Outlook, tenho andado desesperado em arranjar uma solução viável, (barata) e livre para resolver o problema. Confesso que bloqueei no Thunderbird, e não procurei soluções alternativas até recentemente quando senti realmente necessidade.

A solução é muito simples, mas não muito prática. Em primeiro lugar requer uma maquina em Linux, preferencialmente u*buntu ou Debian. Para os menos iniciados aconselho a utilização de um ambiente gráfico para passar os ficheiros da pen/rede para a máquina e vice versa.

Assim que tiverem a maquina à mão, abrir o terminal e instalar o readpst:

sudo apt-get install readpst

Depois do “read PST” instalado, já se pode começar a converter ficheiros *.PST em .EML que depois são facilmente importados pelo Thunderbird através do add-on ImportExportTools.

Escolham uma pasta para trabalhar, e coloquem lá todos os PST’s a converter. Para já, deve-se criar uma pasta para alojar a exportação:

mkdir Archive

E poderão fazer o seguinte comando do readPST para exportar o ficheiro para dentro da pasta (para saberem mais opções, ver aqui):

readpst -M -b -e -o Archive Archive.pst

Se for para abrir na mesma máquina em que estão a trabalhar, basta agora abrir o Thunderbird e, já com o ImportExportTools instalado, ir ao menu Import/Export > importar todos os ficheiros eml de uma directoria > incluir subdirectorias.

Se for para colocar noutra máquina, comprimam a pasta, e depois peguem no ficheiro e levem para onde quiserem.

tar -zcvf Archive.tar.gz Archive

Depois é só descomprimir e realizar o passo anterior.

LAMP em debian

A necessidade aguça o engenho, e de repente, precisei de montar um servidor LAMP, e como sempre, decidi usar Debian 8, pois já estou mais que acostumado a trabalhar com este SO. Outra das necessidades é ter sempre pronta uma snapshot (servidores virtuais é uma maravilha, já tinha dito?) deste deployment para quando for preciso um servidor de teste para a empresa (bastando repor o snapshot para o ter pronto desde a raiz).

Raspberry Pi

Para quem quer trabalhar com RPi, usem raspbian-ua-netinst que facilita bastante o trabalho de instalação. Basta descarregar e passar para o cartão SD com o Win32Disk Imager. Aconselho descarregar o ficheiro raspbian-ua-netinst-v1.x.x.img.bz2 e depois descompactar com o 7zip.

Para os mais avançados, existem duas distribuições para as duas versões (ver aqui), a armel (Rasp v1) e a armhf (Rasp v2). Fiz uso obviamente das versões mais mini, a netinstall igualmente disponível na página de descarregamentos. Escolham as que estão disponíveis debaixo de “CDs pequenos”.

Para escrever para o SD, usar o Win32Disk Imager. Não esquecer de usar uma partição/formatar o SD em FAT32.

Configuração de rede

Visto que este irá ser um servidor empresarial convém o mais possível que o IP seja fixo (até porque vão precisar dele fixo mais tarde). Usei a ajuda da Debian para o fazer, disponível aqui.

Para definir o IP fixo, editar:

nano /etc/network/interfaces

E depois definir à eth0 os seguintes valores (substituir pelos vossos):
PS: No Ubuntu14.x e Debian 8 é provável que encontrem algum texto novo, colocar a configuração estática debaixo de: “source-directory /etc/network/interfaces.d”.

allow-hotplug eth0
auto eth0
iface eth0 inet static
        address 10.0.0.35
        netmask 255.255.255.0
        gateway 10.0.0.1
        network 10.0.0.0
        broadcast 10.0.0.255

A seguir convém sempre reiniciar a placa de rede para ela poder assumir o IP atribuído:

ifdown eth0
ifup eth0

Em alguns casos será também boa ideia definir os servidores de resolução de nomes:

 nano /etc/resolv.conf

E adicionar os seguintes, OpenDNS e Google DNS, respectivamente alterando:

nameserver 208.67.222.222
nameserver 8.8.8.8
nameserver 208.67.220.220
nameserver 8.8.4.4

SSH

Se já estão a usar a versão Jenny do Debian, cuidado que o acesso SSH remoto para root está fechado por defeito. Se o quiserem abrir, o que não é recomendável senão apenas enquanto estão a fazer a instalação, deverão aceder à configuração do SSH:

nano /etc/ssh/sshd_config

e alterando a seguinte linha de:

PermitRootLogin without-password

para

PermitRootLogin yes

Por fim, reiniciar o servidor SSH

/etc/init.d/ssh restart

NOTA: Assumindo que querem sempre aceder por root, e que o vosso router não tenha a porta 22 aberta. Aconselha-se sempre a utilização de uma VPN para posterior acesso SSH, não deixem “tudo aberto”, facilitando os ataques. Mais tarde, após terminadas as configurações, fechar o acesso novamente.

Instalar o Apache

Se não instalaram o apache durante a instalação ( [X] webserver), há que o instalar agora. De notar que na versão Debian Whezzy será instalada a versão 2.2.x e no Debian Jenny será instalada a versão 2.4.x.

apt-get install apache2

PHP

Instalar o PHP é tão simples como:

apt-get install php5 php-pear php5-apcu php5-memcached memcached

Convém sempre fazer já algumas alterações que podem dar muito jeito, especialmente quando se trabalha com bases de dados de alguma dimensão, e plataformas como Zabbix, ownCloud, etc. Aceder ao ficheiro de configuração do PHP:

nano /etc/php5/apache2/php.ini

e inserir os seguintes valores:

max_execution_time = 300
memory_limit = 512M
post_max_size = 512M
upload_max_filesize = 512M
max_input_time = 300
date.timezone = Europe/Lisbon
database = Mysql
always_populate_raw_post_data = -1

Se quiserem que o PHP fique optimizado no que à memoria diz respeito, podem fazer as seguintes alterações no:

nano /etc/php5/cli/php.ini

e depois acrescentar as linhas (depois de ;opcache.enable_cli=0):

;opcache.enable_cli=0
apc.enabled=1
apc.enable_cli=1

 

Base de dados MySQL

apt-get install php5-mysql mysql-server mysql-client

Para limpar bases de dados de testes e coisas afins:

mysql_secure_installation

Algumas configurações podem e devem de ser alteradas no ficheiro de configuração do mySQL para que sejam o mais similares possível às anteriores configurações do PHP. Portanto, aceder ao ficheiro:

nano /etc/mysql/my.cnf

e depois alterar para (o primeiro bind-address é o localhost, e o segundo bind-address deve ser o IP de rede do servidor). Também estou a utilizar alguns tweeks de performance como vi aqui:

# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address            = 127.0.0.1
bind-address            = 10.0.0.15
#
# * Fine Tuning
#
key_buffer              = 512M
max_allowed_packet      = 512M
thread_stack            = 192K
thread_cache_size       = 8
max_connections         = 500
table_cache             = 1024
# thread's pelo número de cores
thread_concurrency      = 8

#
# * Query Cache Configuration
#
query_cache_limit       = 64M


# * InnoDB
#
# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
# Read the manual for more InnoDB related options. There are many!
#
innodb_thread_concurrency = 0
innodb_read_io_threads = 64
innodb_write_io_threads = 64


Configurar Acesso HTTPS/SSL

Seguindo este tutorial e este, consegui implementar facilmente o acesso através de HTTPS, torando o meu servidor bem mais seguro. Primeiro há que instalar o openSSL

apt-get install openssl

e de seguida activar o módulo SSL do apache.

a2enmod ssl
a2ensite default-ssl
a2enmod rewrite

Antes de criar o certificado, convém primeiro criar a pasta onde este irá ser instalado.

mkdir -p /etc/apache2/ssl

Agora podemos, sim, criar o certificado. De notar que pode ser dado outro nome à chave/certificado (apache.key e apache.crt respectivamente):

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt

A pasta onde estão os certificados deverá ser sempre protegida:

sudo chmod 600 /etc/apache2/ssl/*

Para que o servidor passe a usar SSL na pasta default, há que configurar o default-ssl.conf:

nano /etc/apache2/sites-enabled/default-ssl.conf

E alterar os seguintes parâmetros (substituir pela vossa “pasta”):

<VirtualHost _default_:443>
ServerAdmin webmaster@localhost
ServerName example.com:443

DocumentRoot /var/www/html/<pasta>

....

SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key

<Directory /var/www/html/"pasta">
# AllowOverride All
AllowOverride AuthConfig
DirectoryIndex index.php
# Order allow,deny
# Require all granted
# Require all denied
Options All -Indexes
</Directory>

NOTA: em DocumentRoot podemos redireccionar logo para a pasta/sitio pretendido. De seguida bastará reiniciar o apache:

service apache2 restart

phpMyAdmin

Aproveitar para instalar também o phpMyAdmin, que para o qual usei este tutorial:

apt-get install mcrypt phpmyadmin

Uma das grandes preocupações que deve existir, é, configurar não só o acesso SSL:

nano  /etc/phpmyadmin/config.inc.php

E adicionar a seguinte linha em “Server(s) configuration”

/**
 * Server(s) configuration
 */
$cfg['ForceSSL'] = 'true';
$i = 0;

mas também, sempre que possível, bloquear o acesso externo ao phpMyAdmin , desta forma aceder ao:

nano /etc/apache2/conf-available/phpmyadmin.conf

e adicionar as seguintes linhas:

<Directory /usr/share/phpmyadmin>
Options FollowSymLinks
DirectoryIndex index.php
Deny from all
Allow from 10.0.0.0/24

Permitindo assim apenas o acesso a partir da rede interna.

Assim que phpMyAdmin for instalado,e devidamente configurado, acho que é a altura certa para criar o snapshot, para mais tarde, se for necessário, repor a máquina virtual.

 

Redireccionamentos

Na pasta de raiz (/var/www/html) criar o ficheiro .htaccess:

touch .htaccess

Introduzir:

<IfModule mod_rewrite.c>
RewriteEngine On
        RewriteCond %{HTTP_HOST} !^http://domain.tld$ [NC]
        RewriteRule ^(.*)$ https://futurcabo.no-ip.info:440/€ 0,91 (€0.87) [L,R=301]

E não esquecer de alterar as permissões do ficheiro:

chown -R www-data:www-data .htaccess

Copias de Segurança das BD’s

Recorri a vários tutoriais e a várias ideias para construir um sistema de copias de segurança simples. Um dos conselhos que posso dar é: nunca guardar as cópias apenas num sítio, e muito menos na própria máquina.

Para inicio do processo, quero aproveitar uma partilha de rede já existente onde já são efectuadas copias de segurança, no entanto essa partilha é em Windows Server, e requer algumas opções. O objectivo é fazer um mount point com essa partilha. Para isso vamos já criar uma pasta dentro de /mnt:

cd /mnt
mkdir windowsserver

Agora podemos proceder ao mount da partilha, o qual aconselho que tenha obviamente <username>:<password> e respectivas permissões de leitura e escrita:

mount -t cifs -o  username=<username>,password=<password>,rw,nounix,iocharset=utf8,file_mode=0777,dir_mode=0777 //10.0.0.40/Data/BackupBD /mnt/windowsserver

onde “//10.0.0.50/Data/BackupBD” é o caminho de rede para a partilha no Windows Server.

O passo seguinte é criar um script bash que efectue alguns procedimentos:

cd /usr/local/sbin/
nano backupprocedure.sh

E introduzir o seguinte código que faz o seguinte:

  • procura na pasta /var/tmp todos os ficheiros mais velhos que 7 dias
  • faz o dump da base de dados, comprime em bzip2 com a data de hoje no nome e guarda em /var/tmp
  • pega em todos os ficheiros .sql.bz2 com data de ontem para a frente e move para o mount da partilha
#!/bin/sh
find /var/tmp/ -type f -mtime +7 -exec rm {} +
mysqldump -u<user> -p<password> nome_da_bd | bzip2 > /var/tmp/nome_da_bd$(date +%F).sql.bz2
find /var/tmp/ -name "*.sql.bz2" -mtime -1 -print -exec mv {} /mnt/windowsserver\;

Não esquecer de alterar as permissões ao ficheiro:

chmod +x /usr/local/sbin/backupprocedure.sh

Não esquecer de testar sempre o script, para ver se ele está realmente a fazer aquilo que é suposto:

cd /usr/local/sbin/
./backupprocedure.sh

Agora só falta criar um cronjob que corra este scrip, todos os dias por volta das 23h (meia hora antes da copia de segurança do Windows Server, que neste caso o intervalo de tempo chega):

crontab -e

e inserir a linha:

00 23 * * * bash /usr/local/sbin/backupprocedure.sh > /dev/null 2>&1

 

Mail / PHP Mail / SSMTP

Muitos de vós devem ter servidores LAMP como eu, caseiros, ou internos na empresa, mas que normalmente são secundários. O correio electrónico está sempre à responsabilidade de um servidor externo (alugado). O problema é quando é necessário enviar e-mails das aplicações/servidor internas para fora. Encontrei a solução aqui, visto que apenas preciso de um forward, e não propriamente um servidor SMTP interno.

ssmtp is a send-only sendmail emulator for machines which normally pick their mail up from a centralized mailhub (via pop, imap, nfs mounts or other means). It provides the functionality required for humans and programs to send mail via the standard or /usr/bin/mail user agents.

Ora, então, há que instalar primeiro o SSMTP.

apt-get install ssmtp

E começar a devida configuração:

nano /etc/ssmtp/ssmtp.conf

E alterar as seguintes linhas:

root=webmaster@domain
...
mailhub=mail.domain.pt
...
#este deve de ser o nome da máquina, que em principio está preenchido por defeito
hostname=lamp.domain
FromLineOverride=YES

Descomentar a última opção é importante, caso queiram/usem formulários em que o e-mail do remetente é automáticamente preenchido (cuidado com user error). Se o servidor requerer autenticação (inluindo Gmail), então as seguintes configurações deverão ser também introduzidas:

AuthUser=youremail@mail.tld
AuthPass=yourpassword
UseSTARTTLS=yes
UseTLS=yes
##Metodo de autenticação para Gmail
#AuthMethod=LOGIN

Caso definam a opção “FromLineOverride=NO”, terão que configurar o seguinte ficheiro:

nano /etc/ssmtp/revaliases

e alterar a seguinte linha para o e-mail a ser utilizado:

www-data:webmaster@example.com

Em principio, agora basta utilizar um qualquer formulário de contacto e o e-mail deverá ser enviado. Testem e vejam se não dá erro e se recebem (ver por vezes a caixa de spam).

 

Recursos

Orange Pi (one)

Estou sinceramente a ficar cada vez mais espantado com os mini computadores, por um lado pelo preço, por outro, pelo hardware. O Orange Pi One, obviamente por uma questão de preço (ficou-me por 12,65€ e uma cerveja a um amigo), foi a minha mais recente aquisição. O processador é um AllWinner H3 Quad-core Cortex-A7 H.265/HEVC 4K @ 1.2Ghz com uma Mali400MP2 GPU @600MHz. A única coisa que tenho pena é ter apenas 512MB DDR3, mas não me posso queixar pela relação qualidade/preço.

Se estão à espera de que seja tão fácil por a funcionar como qualquer Raspberry Pi, tirem daí o cavalinho da chuva. Estas outras frutas Pi não têm obviamente o suporte e a plataforma de desenvolvimento que actualmente a fundação Raspberry Pi tem. mesmo assim  CuBox-i / Hummingboard e Banana Pi conseguem ter um pouco mais. Cuidado, mesmo que digam, como neste caso, que as imagens de Raspberry Pi funcionam, isso não é bem verdade. O hardware é diferente, e muita coisa tem de ser recompilada para que arranque, e depois, para que funcione.

Para começar, dois dos projectos mais interessantes, OpenELEC e RetroPi, dos quais me tenho debruçado ultimamente não tem suporte para esta plataforma. Portanto se querem por, pelo menos um deles, há que cavar fundo na “deepweb“!

A primeira tentativa falhou, arrancava, formatava as partições mas falhou no segundo boot. Descobri que afinal este é tão esquisito como o todos os Raspberry Pi versão B/B+, isto é, ou têm um transformador que vos debite 5V/2A ou mais, ou nem o tentem arrancar.

OPi-One com dissipadorOutro dos problemas é a temperatura, ele aquece de tal maneira que se puserem um ovo em cima, ele estrela, ou cose. Resolvi o problema com a minha habitual bricolage e espetei-lhe com um dissipador (laranja) arrancado de um NorthBridge de uma qualquer Motherboard avariava e recortado para caber. Arrancava sempre acima dos 60º e agora facilmente mantêm-se entre os 42º e os 55º.

OpenELEC

Tendo a noção que a Laranja Pi que não é suportada directamente pelo projecto, tive de procurar alternativas. Felizmente há um developer Esloveno no GitHub que portou o projecto para esta Laranja Pi. No entanto ele apenas disponibiliza a versão não compilada, e portanto, ou a compilam à mão, ou têm de procurar um pouco mais. Felizmente, continuando a ler, ele disponibiliza os ports numa conta do Mega (não percebo porque é que não o faz no GitHub) que estão publicadas no fórum de suporte do Laranja Pi.

No meu caso descarreguei a última versão que está disponibilizada sempre neste Post do fórum da Orange PI,  e passei para o microSD tal e qual como se faz com qualquer Raspberry Pi (ver como neste Post).

Esta build não tem acesso ao Simple IPTV Client e portanto fiquei um pouco à nora quando o procurei, exactamente porque este também tem de suportar a plataforma. Mas lá o encontrei no mesmo post, mas onde tem as builds mais antigas, dentro de PVR Addons/pvr.iptvsimple.

Visto esta versão não ser suportada oficialmente, também há que fazer os updates de forma manual, mas isso está disponível no wiki do OpenELEC que deixo nas ligações de recurso abaixo.

O que tenho feito para o actualizar é: efectuar sempre uma cópia de segurança > copiar o ficheiro para o PC > desligar o OPi-One > tirar o SD > limpar as partições > formatar novamente em FAT32 > passar a nova imagem para o cartão > colocar novamente no OPi-One > esperar que faça o boot e arranque para o OpenELEC > colocar a copia de segurança anterior no OPi-One > repor a cópia de segurança.

DICA: Mantenham as cópias de segurança do OPi e do RPi sempre compressas, pois os ficheiros são sempre tar‘s e não zip’s. Vai ocupar muito menos espaço!

HDMI-CEC

Não, não esperem que funcione para já no OpenELEC. Actualmente ainda não está portado, embora haja suporte por hardware.

Rede 10/100Mbs

UPDATE: Apesar de no início me parecer que tinha menor débito que o RPi, depois logo do primeiro update  que saiu a coisa ficou muito melhor, e agora não acho nenhuma diferença que seja considerável entre ele e o RPi.


Se tiverem mais ideias, deixem em comentário. Vou actualizado o post à medida que faço mais testes.

RetroPi

Consegui arranjar um Pi Model B 512Mb para ir brincando com outras distribuições, enquanto que o meu novo Pi 2 Model B+ está a fazer agora apenas de Media Center com o OpenELEC (Kodi). Para este teste decidi matar saudades dos jogos da minha NES e dos jogos da Mega Drive que jogava em casa do meu amigo.

Para isso peguei no projecto RetroPie que é uma distro já toda “kitada” para criar-mos um emulador da maior parte das consolas antigas, e ainda alguns jogos antigos de PC como o Doom ou o Duke Nukem 3D.

Comecei por encontrar este artigo na LifeHacker, e agora, para não me esquecer, decidi criar o meu próprio tutorial.

Se tiverem mais dúvidas poderão sempre aceder às ajudas do setup do RetroPie, assim como à pagina do The RetroPie Project.

Instalação

Para instalar a distro é relativamente simples, descarregar daqui do petRockBlog a imagem para a vossa versão do RaspberryPi e depois passar para o SD com a aplicação Win32DiskImager.

Se tiverem um comando, seja ele de que consola for, desde que seja USB, ligem-no agora a uma das portas do Pi. Depois de instalar o SD e arrancar o Pi, ele deve entrar para a Emulation Station e deve detectar um gamepad, e de seguida deve pedir para o configurar. Ás vezes também dá jeito ligar um teclado, se se quiser realizar algumas configurações pelo menu RetroPie.

Configuração RaspberryPi

Agora o passo seguinte é expandir a partição. Contém que tenham atenção no arranque a qual o IP que o Pi adquiriu, ou então, já dentro do Emulation Station > RetroPie > Show IP Adress. Como o servidor SSH já vem instalado por defeito, é só agarrar no Putty e ligar-mo-nos a ele.

sudo raspi-config

E escolher a primeira opção: 1 Expand Filesystem. Como os emuladores puxam um bocadinho por ele, o melhor é já fazer um overclock pequeno para podermos testar os mais básicos. Escolher a opção: “7 Overclock“, “Ok“, e ecolher “Modest” para já!

Outra alteração que podem fazer é a saída do áudio, caso não se esteja a usar HDMI (embora isto possa ser feito depois dentro da UI da EmulationStation) que está dentro da opção: “8 Advanced Options > A9 Audio > 1 Force 3.5mm“.

Outra coisa que gosto de fazer fazer logo, antes de reiniciar (que ele vai pedir ao sair do raspi-config ou do retropi_setup) é definir IP fixo. Para isso, editar:

sudo nano /etc/network/interfaces

E depois definir à eth0 os seguintes valores (substituir pelos vossos):

iface eth0 inet static
        address 10.0.0.35
        netmask 255.255.255.0
        gateway 10.0.0.1
        network 10.0.0.0
        broadcast 10.0.0.255

Agora é só reiniciar e já ira ficar com IP fixo e com as opções definidas.

Configuração RetroPie (3.0)

Outro melhoramento que encontrei é uma alteração no modo de vídeo. Aceder ao RetroPie-Setup e activar uma opção no retroarch.cfg.

cd RetroPie-Setup/
sudo ./retropie_setup.sh

E depois ir: “3 Setup/Configuration” > “304 Edit RetroPie/RetroArch configuration” > “3 Manually edit global configs” > “3 all/retroarch.cfg” e alterar a opção, que está dentro das opções vídeo.

set video_threaded = true

Caso vos aconteça que o comando funcione dentro do Emulation Station, mas não dentro dos jogos, há que efectuar um procedimento para que tudo funcione. Aceder novamente por SSH com o putty e ir directamente ao retropie_setup como expliquei acima e depois ir a “3 Setup/Configuration” > “317 Install RetroArch joypad autoconfigs“.

EDIT: Importante: Depois do update que normalmente se faz em qualquer distribuição linux baseada em Debian, fiquei sem comando, dá um erro logo no boot. Se alguém me souber ajudar, agradeço o vosso tempo. Portanto, não actualizar para já! Ver o update a seguir!

UPDATE: Para as versões 3.3.x/3.5.x já não é preciso definir o “set video_threaded = true”.

Comandos

A configuração dos comandos agora é linear, tal como já foi dito, logo na entrada do Emulation Station. Isto porque (quase) toda a configuração assenta sobre o RetroArch, uma peça de sofware que gere os controladores e as configurações dos comandos para os emuladores. Assim a configuração dos botões é normalmente transitória para cada emulador, mas isso ainda nem sempre acontece (ainda), como é o caso do emulador por defeito da NEO GEO, o Finalburn Alpha Plus.

Para termos a certeza de que botões se está a falar e de que forma estão mapeados, via SSH podem ser feitos os seguintes testes, ao que “js0” corresponde ao primeiro comando/joystick, “js1” ao segundo, e por aí fora:

jstest /dev/input/js0

O resultado será algo parecido com a seguinte linha, em que à pressão de cada botão, o sistema informa “on” ou “off”.

Axes:  0:-32767  1:     0  2:-32767 Buttons:  0:off  1:off  2:off  3:off  4:off  5:off  6:off  7:off  8:off  9:off

Para o exemplo de um comando similar à PS1 (sem os analógicos), deixo aqui o correcto mapeamento com o nome dos botões:

Axes: Botões direccionais
0: //
1: //
2: //
Buttons:  
0: Botão 1 ou Triângulo
1: Botão 2 ou Circulo
2: Botão 3 ou X
3: Botão 4 ou Quadrado
4: Botão 2 Left
5: Botão 2 Right
6: Botão 1 Left
7: Botão 1 Right
8: Botão Select
9: Botão Start

Comandos PS3

Um dos primeiros problemas com que me deparei foi a adopção do ultimo Kernel GNU/Linux que tem um problema e não deixa que o comando da PS3 seja iniciado correctamente quando ligado por USB, o que significa que não funciona wired/ligado por cabo.

Se alguém tiver um roundup para isto, por favor, deixe em comentário.

No entanto tem havido vários esforços que tenha sido feita a compatibilização da utilização por Bluetooth. O meu problema é não ter momento nenhuma dongle compatível com comandos PS3, e portanto estar “empancado” neste passo.

Igualmente, qual é a melhor dongle Bluetooth para colocar no Rasp e garantir compatibilidade com os comandos PS3/4?

Comandos de consolas S/NES

Para quem como eu anda a tentar recuperar os comandos antigos de consolas, especialmente de NES, aconselho vivamente a consulta do projecto RetroPie GPIO Adapter do PetRockBlock e depois seguir este  getting-started . De momento está esgotado na loja, mas espero que em breve essa situação se resolva. Convém que ao pensarem nisto tenham já preparado e aquecido o ferro de soldar, pois vão precisar dele.

Para concretamente ligar o comando NES, há que seguir este tutorial em conjunto com o anterior, mas espero num futuro próximo poder criar o meu próprio how-to.

Depois de contruir todas as ligações fisicas, há que criar as ligações lógicas. Mas em princípio será relativamente fácil, pois o projecto SNESDev já está disponível através do menu de configuração do retropi.

Ligações

ROMS

As ROMS devem de ser carregadas para as respectivas pastas. Como o RetroPie já tem SAMBA pré-configurado, é só aceder através do explorador do Windows (\\10.0.0.35) em em GNU/Linux ligar ao Servidor samba ao IP 10.0.0.35 e verão listadas várias pastas. É dentro da pasta \roms que as deverão colocar, dentro de cada respectivo nome da consola. Assim que o RetroPie reiniciar, ele irá detectar os ficheiros e disponibilizar as “consolas” no menu.

DICA: Convém dar uma olhada na wiki do Retro Pi, porque em muitos dos emuladores não é necessário descompactar as roms, como é o caso da NES e da NEO GEO.

ATENÇÂO: sempre que colocarem novas roms, é necessário reiniciar o sistema até à versão 3.3.x, e apenas reiniciar o Emulation Station a partir desta.

ROMs+BIOS

Acreditem que, se já partiram um pouco a cabeça com os sistemas que precisam de uma BIOS, não são os únicos, especialmente com a NEO GEO. Em primeiro lugar, dêem uma vista de olhos a este post da pplware e fiquem com bem a noção de quais os sistemas que precisam de BIOS. A tabela abaixo mostra os sistemas e a respectiva localização onde devem ser colocadas as BIOS para que possam correr as respectivas ROMS/Jogos.

EMULADOR LOCAL ROMS
Amiga /home/pi/RetroPie/BIOS/kick13.rom ou /home/pi/RetroPie/BIOS/kick20.rom ou /home/pi/RetroPie/BIOS/kick31.rom
Atari 800 /home/pi/RetroPie/BIOS/ATARIXL.ROM (BIOS for Atari XL/XE OS) ou /home/pi/RetroPie/BIOS/ATARIBAS.ROM (BIOS for the BASIC interpreter) ou /home/pi/RetroPie/BIOS/ATARIOSA.ROM (BIOS for Atari 400/800 PAL) ou /home/pi/RetroPie/BIOS/ATARIOSB.ROM (BIOS for Atari 400/800 NTSC) ou /home/pi/RetroPie/BIOS/atari5200.rom (BIOS for the Atari 5200)
Atari 7800 (Opcional). /home/pi/RetroPie/BIOS/7800 BIOS (U).rom
Dreamcast /opt/retropie/emulators/reicast/data/dc_boot.bin e /opt/retropie/emulators/reicast/data/dc_flash.bin
GBA /home/pi/RetroPie/BIOS/gba_bios.bin
Intellivision /home/pi/RetroPie/BIOS/exec.bin e /home/pi/RetroPie/BIOS/grom.bin
Macintosh /home/pi/RetroPie/roms/macintosh/mac.rom e /home/pi/RetroPie/roms/macintosh/disk.img
PC Engine / Turbografx-16 /home/pi/RetroPie/BIOS/SYSCARD3.PCE
PSX /home/pi/RetroPie/BIOS/SCPH1001.BIN  Emuparadise
Neo Geo /home/pi/RetroPie/roms/neogeo/neogeo.zip ou /home/pi/RetroPie/roms/fba/neogeo.zip
Sega CD /home/pi/RetroPie/BIOS/us_scd1_9210.bin ou eu_mcd1_9210.bin ou jp_mcd1_9112.bin
Sega Saturn /home/pi/RetroPie/BIOS/saturn_bios.bin
Videopac or Odyssey 2 /home/pi/RetroPie/BIOS/o2rom.bin

E onde podem descarregar as BIOS? Pois, ai meus amigos, terão de partir a cabeça, tanto como eu, e encontra-las não vai ser tarefa nada fácil devido a todas as restrições legais de copyright (percebem porque é que gosto tanto de open source?)

Emuladores

NEO GEO

Acreditem que perdi horas de volta diste emulador. De inicio a Wiki do RetroPi assustou-me seriamente quando me falou que tinha de as tornar compatíveis com a versão do emulador. Como sou teimoso, depois de largas horas de pesquisa, agradeço ao user “psp_revival” do fórum libretro.com que resolveu o meu problema com esta simples frase: “Just Google fba roms its that simple.

Acontece que o emulador principal que o RetroPi 3.3.x usa para NEO GEO é o Finalburn Alpha Plus (FBA ou PiFBA), e se eu encontrasse a BIOS e as ROMS para esse emulador, o meu problema estaria resolvido. E assim foi, com um pouco de pesquisa la encontrei a BIOS e as respectivas ROMS a funcionarem. Foi só colocar tudo junto. Não aconselho a usar ROMS NEO GEO e BIOS da coolrom.com para os Rasp/esta versão.

Como ainda não resolvi o problema do comando, aconselho a ver o vídeo abaixo por causa de possíveis configurações necessárias.

Configuração dos Comandos NEO GEO

Se estiverem a usar esta versão 3.3.x /3.5.x do Retropi, o emulador NEO GEO não é o GNGEO mas sim o Finalburn Alpha Plus, e portanto, a descrição que está no vídeo não está inteiramente correcta (a não ser alterem o emulador para o GNGEO nas restantes configs). Para configurar devidamente o comando, o que não é feito automaticamente (ainda), deixo aqui o exemplo para um comando similar à PS1. Igualmente através de SSH, aceder e abrir o seguinte ficheiro:

nano /opt/retropie/emulators/pifba/fba2x.cfg

E depois remapear da seguinte forma para que o comando fique devidamente configurado (tenho em conta o que falei anteriormente em “Ver botões dos Comandos“):

[Joystick]
# Get codes from "jstest /dev/input/js0"
# from package "joystick"
# Defaults to XBOX 360 Controller
A_1=0
B_1=1
X_1=2
Y_1=3
L_1=6
R_1=7
START_1=9
SELECT_1=8
#Joystick axis
JA_LR=0
JA_UD=1
#player 2 button configuration
A_2=0
B_2=1
X_2=2
Y_2=3
L_2=6
R_2=7
START_2=9
SELECT_2=8
#Joystick axis
JA_LR_2=0
JA_UD_2=1

Como se devem ter apercebido, aproveitei e configurei logo para os dois comandos de teste que tenho. Sem certezas, mas esta configuração deverá ser também válida para os comandos PS3.

A partir da versão 3.3.x, é também possível aceder às configurações através de CIFS/SMB. O que significa que é possível alterar este ficheiro de configuração a partir do Explorador do Windows, acedendo à respectiva paste de configuração.

Aconselho ainda a leitura:

Sega CD

Não necessita de grandes configurações, apenas a nota para provavelmente ter de se arranjar as BIOS para as três áreas (Europe, USA e Japan) consoante a versão do jogo que se quer jogar. Cuidado também para sempre que se colocar a ROM (normalmente um *.bin), esta deverá ser acompanhada por um ficheiro *.cue com o mesmo nome, que é a lista das músicas em cada parte do CD.

Playstation 1

Fiquei admirado com o desempenho do Rasp1 a emular PSX (mesmo sabendo que o hardware é superior). Também não é necessário grandes configurações, apenas é necessário arranjar a BIOS e depois carregar as roms em qualquer um destes formatos .bin .cue .cbn .img .iso .m3u .mdf .pbp .toc .z .znx.  Respeitar as localizações que informo em ROMs+BIOS.

ZX Spectrum

Obviamente não é para falar do desempenho, mas sim de vos relembrar que, para Z80, convêm ter um teclado ligado. Dentro do jogo depois poderão ter opções que vos permitirão configurar o comando (como é o caso do Chuckie Egg), mas muitos apenas funcionam por teclado.

PC

As mesmas recomendações que deixo para ZX Spectrum, deixo para PC. Sem teclado não conseguem ir muito lonje. Já consegui instalar, mesmo à moda antiga, o Wolfenstein 3D. Jogar, igualmente à moda antiga, com o teclado…. Só faltou memso o som do leitor das diskettes aquando a instalação. Para voltarem atrás no tempo, enviem os ficheiros para a pasta /home/pi/RetroPie/roms/pc e depois arranquem o DOS Box.

Para os mais puristas e quiserem arrancar directamente os jogos DOS a partir do Emulations Station, convém ler este artigo. Para mapear um comando para DOXBox, ler este artigo.

Hotkeys

Hotkeys são botões ou pré-configurações de botões destinadas a efectuar determinadas acções. Ora, uma delas, para não dizer a mais importante, é ter a possibilidade de salvar o jogo em determinado momento (quando estamos prestes a derrotar um boss mas temos pouca vida). Deixo aqui a configuração para o comando:

Hotkeys Acção
Select+Start Sair
Select+L2/Right Shoulder Salva
Select+ R2/Left Shoulder Carrega
Select+Right Input State Slot Increase
Select+Left Input State Slot Decrease
Select+X RGUI Menu
Select+B Reset

PS: Quando temos comandos definidos, é provável que as hotkeys para teclado (F2 para salvar/F4 para carregar) deixem de funcionar.

No entanto tive alguns problemas com o Emulador NEO GEO  Finalburn Alpha Plus (para não variar) em que as hotkeys não funcionão. Memso editando à mão o ficheiro “/opt/retropie/configs/all/retroarch.cfg” e activando as segintes opções para que funcionasse pelo menos com o teclado:

# Saves state.
input_save_state = f2
# Loads state.
input_load_state = f4

 

Hardware

Raspberry Pi v1 B

Para este sistema estou a usar um Model B que comprei via ebay na Inglaterra e foi trazido por um amigo meu. Tenho o usado apenas para alguns testes, e deixo já o bom conselho de sempre utilizarem um cartão Class 10.

Raspberry Pi v2 B+

Já instalei 2 sistemas com este Pi, pelo menos em Sega 32X e N64 nota-se realmente a diferença. Aconselho o 2 para projectos com estes emuladores.

Comando PS3

Como comando estou a usar este comando comprado no ebay, ligado com cabo USB. Não tenho dongle Bluetooth, mas sei que dá para configurar e emparelhar.

SHENGHIC 2009/0708ZXW-V1Inc. PLAYSTATION(R)3Conteroller

Comando Twin Dilong PU201T

Dilong-dobra-PU201T-dobra-jogo-USB-joystick-jogo-de-jogo-de-suporte-onlineNo entanto, como na versão 3.3.x não o posso usar o comando PS3 por cabo, às vezes na loja do Chinês mais próxima encontram-se destas coisas que podem ser bastante úteis. Isto é Dilong PU201T, um comando gémeo (dois comandos num só cabo) que o GNU/Linux chamou de Twin USB Gamepad,  e que funcionam de forma excelente no Rasp. Pelo preço, nada mau, e resolve o problema das poucas entradas USB das primeiras versões.

Comando Game Prince JH-7001

Um comando tipo PS1, sem os analógicos e que é muito fácil de encontrar em qualquer loja do chinês. Serve perfeitamente para as consolas mais antigas. É só ligar e configurar. Não comprar a mais de 5€ 😉 .

Nota final

Deixem-me críticas e sugestões nos comentários. Estou à procura de como se liga dois comandos. Basta um HUB USB?

Recursos


recalboxOS

Enquanto procurava detalhes sobre o RetoPi, encontrei este sistema operativo, muito similar ao anterior.

Visão sócio-tecnologica