Artigos‎ > ‎Configuração de Hardware‎ > ‎PocketPC‎ > ‎

Linux on Ipaq 3950


Primeiramente gostaria de salientar que não sou o autor principal do conteúdo deste artigo. A minha intenção é de mostrar o que outros autores tem realizado (referenciando links para o conteúdo original) neste blog até como um guia pessoal para uso próprio e ainda compartilhar minhas anotações e pequenas modificações que realizo no conteúdo, desejando que possa ajudar mais alguém em algum lugar.
First and foremost, I take no credit for any of this post’s content. I am really just taking what others have done (which I have links to bellow) and am putting it on my blog for a personal reference and hopefully the small changes that I made to their guides will help someone somewhere.

link: http://www.smartphonemag.com/cms/blog/414/ipaq-linux-and-alternate-os-guide
link: http://mstempin.free.fr/linux-ipaq/html_nochunks/Linux-iPAQ-HOWTO-1.1.html

Primeiro precisamos se conectar com uma máquina linux no pocketpc.
Vamos configurar o pppd para a porta COM1 (/dev/ttyS0) e utilizar os endereços 192.168.2.100/192.168.2.101 (Host/iPaq)

Crie o arquivo:

sudo leafpad /etc/ppp/peers/PocketPC

# /etc/ppp/peers/PocketPC -*- sh -*- pppd options for direct iPAQ connection
# created 08-May-2002 Michel Stempin <michel.stempin@wanadoo.fr>
# autodate: 08-May-2002
# autotime: 16:38

# The serial line to use. Use either "/dev/ttyS0" for "COM1" or "/dev/ttyS1"
# for "COM2" PC ports.
/dev/ttyS0

# Set the speed to 115200 bps.
115200
# As PocketPC considers us as a modem ;-), we have to pretend by sending
# the expected answers.
# For this, we use the "chat" program and "expect/send" pairs. You can specify
# the "-v" option to /usr/sbin/chat if you want to debug the "modem" initial dialog.
# Basically, the chat is (\r means a <CR>, i.e. a Carriage Return character):
#     - expect ATZ<CR> (reset modem command)
#     - send OK<CR>
#     - expect AT<CR> (expect exactly 8 commands beginning with AT
#     - send OK<CR>     you may have to change the number of ATs)
#     - expect ATDT<CR> (dial using tone modulation)
#     - send CONNECT<CR>
connect "/usr/sbin/chat 'ATZ\r' OK 'AT' OK 'AT' OK 'AT' OK \
'AT' OK 'AT' OK 'AT' OK 'AT' OK 'AT' OK 'ATDT' CONNECT"

# async character map -- 32-bit hex; each bit is a character
# that needs to be escaped for pppd to receive it.  0x00000001
# represents '\x01', and 0x80000000 represents '\x1f'.
asyncmap 0

# Do not require PocketPC to authenticate itself before allowing network
# packets to be sent or received.
# NOTE: This option is only available to the "root" user.
noauth

# No hardware flow control (i.e. RTS/CTS) to control the flow of data
# on the serial port, as the iPAQ seems not to handle it.
nocrtscts

# Don't use the modem control lines
local

# Specifies that pppd should use a UUCP-style lock on the serial device
# to ensure exclusive access to the device.
lock
# Don't fork to become a background process (otherwise pppd will do so
# if a serial device is specified).
-detach

# Increase debugging level (same as -d).  If this option is given, pppd
# will log the contents of all control packets sent or received in a
# readable form.  The packets are logged through syslog with facility
# daemon and level debug. This information can be directed to a file by
# setting up /etc/syslog.conf appropriately (see syslog.conf(5)).  (If
# pppd is compiled with extra debugging enabled, it will log messages
# using facility local2 instead of daemon).
#debug

# Enable debugging code in the kernel-level PPP driver.  The argument n
# is a number which is the sum of the following values: 1 to enable
# general debug messages, 2 to request that the contents of received
# packets be printed, and 4 to request that the contents of transmitted
# packets be printed.
#kdebug 7

# Sets the IP addresses on both side of the link.
192.168.2.100:192.168.2.101

E ainda altere o :
sudo leafpad /etc/hosts

192.168.2.101 ipaq ipaq.casa
192.168.2.100 localhost
192.168.2.100 obra.vanaware.com obra

Agora acesse o PocketPC e desabilite o ActiveSync:

Start >> ActiveSync >> Tools >> Options
Desmarque a opção "Use mobile schedule to sync with this PC"
Depois vá em Options
Desmarque a opção "Enable PC sync using this connection"
Aperte OK e X para salvar e fechar a Tela

Agora vamos criar uma nova conexão de modem (o PocketPC acha que o linux é um modem):
Start >> Setting >> Connections >> Connections Icon
Acesse "Add a new modem connection" e dê um nome Linux e utilize a COM1.
Use zero como número de telefone a utilizar e aperte Next novamente
Depois vá em Advanced...
Selecione velocidade 115200 e desmaque o "wait" e o "cancel"
Depois vá em Port Settings:
Selecione Data bits 8, None Parity 1 stop bits e None Flow control.
depois vá em TCP/IP:
Marque a opção "Use server-assigned IP address", desmarque slip e Marque as duas opções de "compression".
Depois vá em Servers e marque a opção "Use server assigned address"
Agora aperte OK, Finish e OK novamente e X até sair de Configurações.

Agora vamos testar:

/usr/sbin/pppd call PocketPC

E no PocketPC peça para conectar com a conexão Linux previamente configurada.
Start >> Setting >> Connections >> Connections Icon
Manage existing connections
Aperte e segure em Linux e depois escolha Connect
Marque Save password e depois OK
E feche as telas com OK e X.

No linux vai aparecer:

Serial connection established.
Using interface ppp0
Connect: ppp0 <--> /dev/ttyS0
local  IP address 192.168.2.100
remote IP address 192.168.2.101

Para automatizar isso faça:
sudo leafpad 

/etc/inittab


# Run a connection to the iPAQ 
ppp:2345:respawn:/usr/sbin/pppd call PocketPC

E depois 
init q

Vamos instalar um servidor http apache2 no host linux.

sudo apt-get install apache2

Baixe o servidor de FTP para PocketPC
wget -O /mnt/storage/Documents/Softs/PocketPC/Linux/Familiar/FTPS006AP.ZIP http://www.oohito.com/data/wince/FTPS006AP.ZIP
cd /mnt/storage/Documents/Softs/PocketPC/Linux/Familiar/
unzip FTPS006AP.ZIP

mkdir /var/www/iPAQ
sudo cp /mnt/storage/Documents/Softs/PocketPC/Linux/Familiar/ftpsvr.exe /var/www/iPAQ

sudo service apache2 restart

No PocketPC digite no internet browser:
http://192.168.2.100/iPAQ/

E baixe o arquivo ftpsvr.exe e execute. Vai aparecer um pequeno icone do servidor ftp no canto direito inferior da tela.

Agora vamos acessar o servidor ftp do PocketPC:

sudo apt-get install ftp
ftp ipaq

Aperte ENTER para Name e Password e depois
passive (para aparecer passive mode off)

O comando ls lista os arquivos. o comando binary configura transferencia binária (mais rápido) e o comando bye sai do servidor ftp

Para enviar arquivos digite put <nome do arquivo>
Para receber arquivo digite get <nome do arquivo>

Lista completa de comandos ftp aqui:

Agora vamos baixar os arquivos para instalar no PocketPC:
cd ~/Downloads
wget -r --no-parent http://ftp.gwdg.de/linux/handhelds/distributions/familiar/releases/v0.8.4/install/files/h3900/

Vai baixar os sequintes arquivos:
rm ~/Downloads/ftp.gwdg.de/linux/handhelds/distributions/familiar/releases/v0.8.4/install/files/h3900/index.*
ls ~/Downloads/ftp.gwdg.de/linux/handhelds/distributions/familiar/releases/v0.8.4/install/files/h3900
BootBlaster3900-2.6.exe
BootBlaster3900-2.6.exe.md5sum
bootldr-pxa-2.21.12.bin
bootldr-pxa-2.21.12.bin.gz
bootldr-pxa-2.21.12.bin.md5sum
bootstrap-image-v0.8.4-h3900.rootfs.jffs2
bootstrap-image-v0.8.4-h3900.rootfs.tar.bz2
gpe-image-v0.8.4-h3900.rootfs.jffs2
gpe-image-v0.8.4-h3900.rootfs.tar.bz2
opie-image-v0.8.4-h3900.rootfs.jffs2
opie-image-v0.8.4-h3900.rootfs.tar.bz2

mv ~/Downloads/ftp.gwdg.de/linux/handhelds/distributions/familiar/releases/v0.8.4/install/files/h3900/* ~/Downloads/
rm -R ~/Downloads/ftp.gwdg.de

Check a integridade deles com:
md5sum -c BootBlaster3900-2.6.exe.md5sum
md5sum -c bootldr-pxa-2.21.12.bin.md5sum

E transfira os arquivos:
ftp ipaq
passive
binary
put bootldr-pxa-2.21.12.bin "/My Documents/bootldr-pxa-2.21.12.bin"
put BootBlaster3900-2.6.exe "/Windows/Start Menu/Programs/BootBlaster3900-2.6.exe"
bye

Execute o arquivo Bootblaster.exe, escolha para fazer um backup do bootloader e do wince atual (opção flash e SAVE...) e depois copie para o Host Linux uma cópia do wince do iPaq pelo ftp:
ftp ipaq
passive
binary
get "\My Documents\saved_bootldr.bin" saved_bootldr.bin
get "\My Documents\saved_bootldr.gz" saved_bootldr.gz
get "\My Documents\wince_image.gz" wince_image.gz
get "\My Documents\asset_image.gz" asset_image.gz
bye

sudo mkdir /mnt/storage/Documents/Softs/PocketPC/Linux/Original
cp saved_bootldr.bin /mnt/storage/Documents/Softs/PocketPC/Linux/Original/ 
cp saved_bootldr.gz /mnt/storage/Documents/Softs/PocketPC/Linux/Original/ 
cp wince_image.gz /mnt/storage/Documents/Softs/PocketPC/Linux/Original/ 
cp asset_image.gz /mnt/storage/Documents/Softs/PocketPC/Linux/Original/ 

Preciamos agora desabilitar o ppp:
sudo leafpad 

/etc/inittab


# Run a connection to the iPAQ 
ppp:2345:respawn:/usr/sbin/pppd call PocketPC

E depois 
init q

Agora vamos criar uma conexão serial com o PocketPC. Instale:
sudo apt-get install minicom
sudo usermod -aG lp aarvati

minicom -s

E vá para serial port setup com a seta para baixo:
ENTER
A = /dev/ttyS0
E = comm parameters
I = 115200bps
Q = 8 data bits, no parity, and 1 stop bit
ENTER
F = flow control none
G = flow control
none
ENTER
E com a seta para baixo vá em:
Save setup as dfl
E depois com a seta para baixo EXIT.


Agora a parte mais perigosa de todo o processo - trocar o bootloader.


Execute o bootblaster.exe

Escolha Flash e depois Program

Retornará mach_type set to 203 = 0xcb


ANTES DE DESLIGAR verifique o bootloader com

Escolha Flash e depois Verify


Cruze os dedos e reset com o botão de reset (embaixo do aparelho com um clips)


Para entrar em modo de console serial voce precisa reiniciar o PocketPC com o reset pressionado e o centro do joypad.

Reconect à base serial e aperto o botão de calendário ou a barra de espaço no host linux.




Agora desproteja o PocketPC com o comando:

boot> pflash 0x40000 0xffff 0
addr=00040000
len=0000FFFF 
protect=00000000 
Protect=00000000 
boot>

Configure o bootloader:
boot> partition reset
reset_partitions: partition_table = 0xA3A00014
reset_partitions: flashDescriptor = 0x00034DCC
define_partition: base 0x00000000
define_partition: partition_table 0xA3A00014
defining partition: bootldr
define_partition: base 0x00040000
define_partition: partition_table 0xA3A00014
defining partition: root
define_partition: base 0x01FC0000
define_partition: partition_table 0xA3A00014
defining partition: asset
boot>

Flash root:
boot> set ymodem 1
  setting param <ymodem> to value <1>
boot> load root
partition root is a jffs2 partition:                                           
 expecting .jffs2 or wince_image.gz.                                           
 After receiving file, will automatically uncompress .gz images                
loading flash region root                                                      
using ymodem
ready for YMODEM transfer...


No minicom aperte CTRL+A e S. Com a seta para baixo escolha o protocolo ymodem
Escolha o arquivo a enviar com a seta para baixo e a tecla de espaço para selecionar e ENTER

Escolha um destes (vai demorar uns 20 minutos):
bootstrap-image-v0.8.4-h3900.rootfs.jffs2
gpe-image-v0.8.4-h3900.rootfs.jffs2
opie-image-v0.8.4-h3900.rootfs.jffs2

E depois apenas digite boot.
Mas antes configure para mostrar na conexão serial as mensagens de boot:
boot> show params linuxargs
>> Compaq OHH BootLoader, Rev 2-21-12 [BIG_KERNEL] [MD5] [MONO]
>> Last link date: Mon Nov  3 15:33:04 EST 2003
>> Contact: bootldr@handhelds.org
  linuxargs= < noinitrd root=/dev/mtdblock1 init=/linuxrc console=ttySA0>
boot> set linuxargs="noinitrd root=/dev/mtdblock1 init=/linuxrc console=ttyS0"
  setting param <linuxargs> to value <noinitrd root=/dev/mtdblock1 init=/linuxr>
boot> show params linuxargs
>> Compaq OHH BootLoader, Rev 2-21-12 [BIG_KERNEL] [MD5] [MONO]
>> Last link date: Mon Nov  3 15:33:04 EST 2003
>> Contact: bootldr@handhelds.org
  linuxargs= <noinitrd root=/dev/mtdblock1 init=/linuxrc console=ttyS0>
boot>

Altere o final do resultado de show params linuxargs
linuxargs= < noinitrd root=/dev/mtdblock1 init=/linuxrc console=ttySA0>

Para ttyS0 ao invés de ttySA0
set linuxargs="noinitrd root=/dev/mtdblock1 init=/linuxrc console=ttyS0"

Faça o login com root e a senha rootme







O URL específico do gadget não foi encontrado



Comments