Archive for January, 2007
Finalmente Linux rodando no PSP da Sony
Um hacker chamado Chris Mulhearn conseguiu portar o uClinux (também usado no iPodlinux) para o PSP da Sony.
O cara criou um adaptador para ligar no conector que é usado para acessar o controle remoto, que normalmente vem com o PSP. A comunicação entre o controle remoto e o PSP é baseado no padrão RS232 porém ao invés de +12V e -12V utiliza 0V e +2.5V.
Então ele criou uma imagem do kernel do Linux mais o rootfs e carregou esta imagemn usando o próprio sistema de atualização do PSP, o bootloader do PSP carrega e executa este arquivo de imagem e envia a saída pela serial.
O porte está em fase inicial, mas já é possível acessar o terminal via serial, o próximo passo será criar os drivers para os demais periféricos do dispositivo.
Mais informações:
http://df38.dot5hosting.com/~remember/chris/
Add comment January 30, 2007
Gnopernicus falando português
Hoje em dia está se tornando comum o uso de computadores por deficiente visuais, porém estes recursos nem sempre estão disponíveis para todos, devido aos altos custo de equipamentos e softwares para este fim. Visando diminuir este hiáto a empresa Romena “Baum Engineering SRL” desenvolveu o Gnopernicus, que pode ser utilizado gratuitamente por qualquer usuário Linux.
O Gnopernicus é um software de tecnologia assistiva que permite a um deficiente visual utilizar o computador.
O programa possui suporte a dispositivos Braille, síntese de voz, entre outros recursos interessantes. Porém, até então o Gnopernicus só poderia ser utilizado por usuários de língua inglesa e de outras línguas suportadas pelo Festival ou por outro TTS comerciais.
O foco principal deste tutorial é explicar como integrar o festival em português com o Gnopernicus, para que deficientes visuais Brasileiros, ou de países de língua portuguesa, possam também usar computadores. Espero que este tutorial possa incentivar grupos de desenvolvedores a criar uma distribuição Linux customizada para deficientes visuais.
O Festival possui suporte ao idioma português graça a um projeto desenvolvido por professores e alunos da UFRGS, porém ele utiliza as ferramentas da OGI (http://cslu.cse.ogi.edu/tts) e portanto está submisso à licença OGI que é muito restritiva, sendo seu uso permitido apenas para uso acadêmico e uso pessoal. Qualquer outra utilização é considerado uso comercial.
Instalando o Festival em Português
Notas: A compilação do festival-1.95 com o gcc-3.x ou 4.x, g++-3.x ou 4.x gera erros de compilação, porém utilizando-se o gcc-2.95 e g++-2.95 pode-se compilá-lo corretamente.
Caso não tenha estas versões instale-as:
# apt-get install gcc-2.95
# apt-get install g++-2.95
E em seguida mude o link simbolico do gcc e g++ para usarem a versão 2.95:
# cd /usr/bin
# rm gcc
# ln -s gcc-2.95 gcc
# rm g++
# ln -s g++-2.95 g++
DOWNLOAD
Baixe os seguintes arquivos do site do Festival e do OGI:
http://www.cstr.ed.ac.uk/downloads/festival/1.95/festival-1.95-beta.tar.gz
http://www.cstr.ed.ac.uk/downloads/festival/1.95/festlex_CMU.tar.gz
http://www.cstr.ed.ac.uk/downloads/festival/1.95/festlex_OALD.tar.gz
http://www.cstr.ed.ac.uk/downloads/festival/1.95/festlex_POSLEX.tar.gz
http://www.cstr.ed.ac.uk/downloads/festival/1.95/festvox_kallpc16k.tar.gz
http://www.cstr.ed.ac.uk/downloads/festival/1.95/festvox_kedlpc16k.tar.gz
http://www.cstr.ed.ac.uk/downloads/festival/1.95/festvox_rablpc16k.tar.gz
http://www.cslu.ogi.edu/tts/download/data/OGIresLPC-2.0.7.tar.gz
http://www.cstr.ed.ac.uk/downloads/festival/1.95/speech_tools-1.2.95-beta.tar.gz
Baixe a arquivo de fonemas em português:
http://node1.nirvanix.com/e566Ah03~bUhklTTFPm~4qN817n4~nZwtbetzVY~MicwvaQ/FreeDrive/fd_61647/festival/festival_portuguese.tar.gz
DESCOMPACTAÇÃO
Crie um diretório para instalar o Festival(ex. /tts)
Entre dentro deste diretório e extraia todos os arquivos acima para o diretório que você criou:
# cd /tts
# tar zxvf /caminho/arquivos/festival/arquivo.tar.gz
CONFIGURAÇÃO
Edite o arquivo /tts/festival/config/config.in, acrescentando nas ultimas linhas deste
arquivo:
ALSO_INCLUDE += OGIcommon
ALSO_INCLUDE += OGIdbase
ALSO_INCLUDE += OGIresLPC
ALSO_INCLUDE += OGIinsert
INSTALAÇÃO
Entre no diretório /tts/speech_tools e execute:
# ./configure
# make
Entre /tts/festival e faça o mesmo:
# ./configure
# make
Testando
Entre no diretório /tts/festival/bin e execute o comando “./festival”.
Aparecerá o prompt <festival>, então digite: (voice_aga_diphone) <ENTER>
Faça um pequeno teste: (SayText “Olá Mundo Cruel!”)
Criando link
Entre em /usr/bin e crie um link simbólico para o festival:
# ln -s /tts/festival/bin/festival .
Modificando a libgnome-speech para suportar o festival em Português
Baixe o código fonte do libgnome-speech:
# apt-get source libgnome-speech3
Baixe o patch http://www.freedrive.com/files/8jzusx06weo80/gnome-speech-ptbr.diff
Aplique-o:
# patch -p0 < gnome-speech-ptbr.diff
Entre em gnome-speech-0.3.6 e compile, caso seu sistema não tenha o fakeroot instalado, instale-o antes:
# apt-get install fakeroot
# cd gnome-speech-0.3.6
# dpkg-buildpackage -rfakeroot -uc -b
Retorne ao diretório anterior e veja que o libgnome-speech3_0.3.6-1_i386.deb foi criado, então instale-o
# cd ..
# dpkg -i libgnome-speech3_0.3.6-1_i386.deb
Instalando o Gnopernicus
O Gnopernicus possui como dependência os seguintes programas:
cspi-1.0 (at-spi package)
gconf-2.0
gtk+-2.0
gtk -doc (opcional)
libglade-2.0
libgnome-2.0
libgnomeui-2.0
libxml-2.0
gnome-speech
gnome-mag (opcional)
festival
Das dependências acima apenas a at-spi não é instalada automáticamente pelo Debian, porém ela é necessária para que o suporte a voz do Gnopernicus funcione, portanto deve-se instala-la manualmente:
# apt-get install at-spi
Como nós instalamos o Festival a partir do código fonte, não devemos permitir que o Debian tente instalar o pacote Festival padrão que funciona apenas em inglês.
Vamos resolver isso criando um pacote festival vazio, vamos usar o equivs para isso:
# apt-get install equivs
Entre num diretório qualquer com permissão de escrita (ex. /tmp) e execute:
# cd tmp
# equivs-control festival
Edite o arquivo “festival” criado da seguinte forma:
Section: misc Priority: optional Standards-Version: 3.5.10Package: festival Version: 2.0.0 Maintainer: Your Name <yourname@foo.com> Pre-Depends: Depends: Recommends: Suggests: Provides: festival Architecture: all Copyright: Changelog: Readme: Extra-Files: Description: Festival local long description and info . second paragraph
Agora crie o pacote festival:
# equivs-build festival
E instale:
# dpkg -i festival_2.0.0_all.deb
Pronto, agora podemos instalar o Gnopernicus:
# apt-get install gnopernicus
Execute o gnopernicus, vá em Preferências -> Síntese de Voz -> Vozes -> Editar Absoluto:
Driver do Mecanismo: Festival GNOME Speech Driver
Locutor do mecanismo: V2 Aga
Clique no botão “Forçar o driver e o locutor selecionados para todas as vozes”
Alan Carvalho de Assis
acassis@gmail.com
Add comment January 29, 2007
Configurando o LinuxBIOS para suportar VGAROM em flash de 2MB
Modifique o arquivo:
LinuxBIOSv2/src/mainboard/tyan/s2850/Config.lb
Altere a linha:
“rom_address” = “0xfff80000″
para
“rom_address” = “0xffe00000″
Isto fará com que o LinuxBIOS execute o código da VGA ROM 2MB abaixo do ponto de início da BIOS e não 512KB abaixo.
Add comment January 29, 2007
Interfaceando GTK + SNMP + Lintouch
Há algum tempo atrás fiz um programa para controlar um velocimetro no Lintouch, o objetivo era ter o servidor SNMP pegando dados de um programa visual (GTK) e enviando estes mesmos dados para visualização no Lintouch.
Como tudo que não é documentado se perde, resolvi discutir a implementação aqui.
O MIB é simples:
UFRGS-MIB DEFINITIONS ::= BEGIN IMPORTS MODULE-IDENTITY, OBJECT-TYPE, Integer32, Counter32, IpAddress, enterprises FROM SNMPv2-SMI MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF; -- -- A brief description and update information about this mib. -- ufrgs MODULE-IDENTITY LAST-UPDATED "0104010000Z" -- 01 Apr 2001, midnight ORGANIZATION "UFRGS" CONTACT-INFO " Author: Alan Carvalho de Assis UFRGS, Departamento de Engenharia Eletrica Av. Oswaldo Aranha Porto Alegre BRAZIL email: acassis@gmail.com tel: +55-051-3316-3561" DESCRIPTION "MIB Agent for Baja-by-Wire" ::= { enterprises 12619 } -- the meters group meters OBJECT IDENTIFIER ::= { ufrgs 1 } reserved OBJECT IDENTIFIER::= { ufrgs 2 } -- -- The Speed (to speedometer) -- speed OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-write STATUS current DESCRIPTION "The speed variable." DEFVAL { 0 } ::= { meters 1 } -- -- The RPM (to tachometer) -- rpm OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-write STATUS current DESCRIPTION "The engine rotation variable." DEFVAL { 0 } ::= { meters 2 } -- -- The temperature variable -- temperature OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-write STATUS current DESCRIPTION "The engine temperature." DEFVAL { 0 } ::= { meters 3 } END
Na inicialização do MIB (init-ufrgs) eu crio uma área de memória compartilhada:
typedef struct {
int speed;
int rpm;
int temperature;
}meter;
#define SHM_SIZE 12 /* 12 bytes (meter struct size) */
static u_long speed;
static u_long rpm;
static u_long temperature;
meter *m;
void init_ufrgs(void)
{
static oid speed_oid[] = { 1,3,6,1,4,1,12619,1,1 };
static oid rpm_oid[] = { 1,3,6,1,4,1,12619,1,2 };
static oid temperature_oid[] = { 1,3,6,1,4,1,12619,1,3 };
key_t key;
int shmid;
int *data;
int mode;
FILE *f;
/* create the identifier file*/
if((f=fopen("/tmp/meter","w")) == NULL)
{
perror("fopen");
exit(1);
}
/* close it*/
fclose(f);
/* make the key: */
if ((key = ftok("/tmp/meter", 'R')) == -1) {
perror("ftok");
exit(1);
}
/* connect to (and possibly create) the segment: */
if ((shmid = shmget(key, SHM_SIZE, 0644 | IPC_CREAT)) == -1) {
perror("shmget");
exit(1);
}
/* attach to the segment to get a pointer to it: */
data = shmat(shmid, (void *)0, 0);
m = (meter *) data;
if (data == (int *)(-1)) {
perror("shmat");
exit(1);
}
DEBUGMSGTL(("ufrgs", "Initializing\n"));
}
E na requisição MODE_GET de cada variável lemos o valor que nos foi enviado pela aplicação GTK (discutida abaixo):
case MODE_GET: speed = (u_long) m->speed; snmp_set_var_typed_value(requests->requestvb, ASN_INTEGER, (u_char *) &speed, sizeof(speed)); break;
Na aplicação GTK abrimos a região de memória (mesmo código de init_ufrgs) compartilhada e escrevemos os valores lidos dos sliders:
void on_hscale1_value_changed(GtkRange *range, gpointer user_data){
gdouble vel;
vel = gtk_range_get_value(range);
m->speed = (int)vel;
}
void on_hscale2_value_changed(GtkRange *range, gpointer user_data){
gdouble rot;
rot = gtk_range_get_value(range);
m->rpm = (int)rot;
}
void on_hscale3_value_changed(GtkRange *range, gpointer user_data){
gdouble temp;
temp = gtk_range_get_value(range);
m->temperature = (int)temp;
}
Add comment January 27, 2007
De novo: adicionando bibliotecas dinâmicas
Já adicionei este post há algum tempo, mas agora quando procurei ele não estava aqui, talvez eu apaguei sem querem ao tentar remover os comentários SPAM.
ldconfig -v -n /comum/BAF/Servidor/oba/lib
Add comment January 26, 2007
Configurando placa Gigabit no Linux
A configuração da placa Broadcom NetXtreme BCM5705 Gigabit Ethernet no Linux é um processo simples.
Na configuração do kernel vá em “Device Driver” -> Ethernet (1000 Mbit) e marque a opção “Broadcom Tigon3 support”.
Compile o kernel normalmente, para carrega execute:
modprobe tg3
Pronto, pena que a rede aqui não funciona a 1Gigabit ainda
Add comment January 25, 2007
Ubuntu fixando as interfaces de rede ao MAC
De repente você troca sua placa de rede e nada da Internet ou a rede funcionar. Você verifica os módulos, e vê que tudo está certo, mas nada da rede funcionar, o que será?
Simples, o Ubuntu criou um arquivo chamado /etc/iftab para associar as interfaces de rede ao seu número MAC, veja o conteúdo desse arquivo:
# This file assigns persistent names to network interfaces.
# See iftab(5) for syntax.
eth0 mac 00:50:BF:38:A1:0B arp 1
Se quiser sua nova placa de rede funcionando terá que adicionar o número MAC dela no lugar do MAC da placa de rede antiga.
Add comment January 25, 2007
EXPRESSÕES IDIOMÁTICAS
Estas dicas foram retiradas do site English Home, pelo menos a grande maioria, algumas eu mesmo adicionei:
A:
An eye for an eye, a tooth for a tooth. = Olho por olho, dente por dente.
As busy as a bee. = Muito ocupado
B:
Be sure to… = Não deixe de…
Better lose the saddle than the horse. = vão-se os anéis, mas ficam os dedos.
Blood is thicker than water. = Os laços sanguíneos são mais fortes.
Bode ill = mau sinal, mau agouro
Bode well = bom sinal, bom presságio
Break a leg. = Boa sorte.
By the book = De acordo com as regras
C:
Care About. = Importar com alguém
Come in handy. = Vir a calhar.
D:
Do without. = Passar sem
Don’t buy that! = Não caia nessa!
Don’t give me that! = Essa não!
Drink like a fish. = Beber como um gambá
F:
Feel like. = Estar disposto a
Feel sorry. = Sentir muito, arrepender-se
Feel sorry for … = Ter pena de…
For a change. = para variar
G:
Get lost! = Desapareça!
Get out of my sight. = Saia da minha frente.
Give someone the cold shoulder. = Tratar alguém com pouco caso.
Go for a walk. = Dar um passeio
H:
Head Over Heels. = de ponta cabeça, confuso.
Help yourself. = Sirva-se
Hit the road. = Pegar a estrada.
I:
I hope so. = Eu espero que sim.
I think so. / I don’t think so. = Acho que sim. / Acho que não.
I’ll do my best. = Farei o possível
I’m afraid not. = Acho que não.
In the short / long run. = A curto / longo prazo.
It’s up to you = Fica a seu critério
It’s not my business. = Não é da minha conta.
It’s raining cats and dogs. = Está chovendo canivete.
It’s a piece of cake. = É muito fácil.
J:
Jump in the lake! = Vá para o inferno!
K:
Keep yourself to yourself. = Fique na sua.
Kick the bucket. = Morrer, bater as botas.
Kill two birds with one stone. = Matar dois coelhos com uma cajadada só.
L:
Lay it on = dizer, explicar
Leave me alone. = Me deixe em paz.
M:
Make yourself comfortable. = Fique a vontade.
Mind your own business. = Não se meta.
N:
needle in a haystack = agulha num palheiro
no matter what happen. = não importa o que aconteça.
O:
Out of the blue. = De repente.
P:
Pay a compliment. = Elogiar
R:
Round (around) the clock. = Durante 24 horas.
H:
Sell like hot cake. = Vender muito.
Set an example. = Dar um exemplo.
Sleep like a log = dormir como uma pedra
T:
Take it easy = Calma
Take for granted. = Considerar natural
That will do. = Isso serve.
Thrown in = incluso, jogado dentro, anexado.
To whom it may concern. = A quem possa interessar.
W:
Worth a damn = Ter valor
Write in full. = Escrever por extenso.
Y:
You’re pulling my leg! = Você está de brincadeira comigo
Add comment January 22, 2007
Disassemblador para WIN32
Um ótimo disassemblador pra Windows, já usei há 6 anos atrás, realmente é muito bom.
Add comment January 15, 2007