Sagemcom Router F@st 1704 – Teardown

Mar 2, 2011   #hardware  #router  #sagemcom  #teardown 

Recebi nesta semana, da GVT, um modem ADSL2 + Router Wireless completamente de graça. Ainda desconheço o porquê, pois não sou novo cliente (de fato, há anos tenho o serviço de telefone e banda larga deles), e já havia recebido um modem Thomson TG508 (que carece de um teardown!) por ter feito um upgrade no plano de Internet. Mesmo não precisando deste modem Thomson, disseram que era “meu” e deveria ficar com ele de qualquer forma. Tudo bem, vou colecionando modems por aqui! Mas é claro que só após desmontá-lo que eles serão guardados! Como o David diria: geek porn!

Eis o Sagemcom Router F@st 1704!

Vista frontal

Vista traseira

O “1704” é seu típico roteador wireless 802.11 b/g com hub 10100 de 4 portas integrado, somado a um modem ADSL2+.

Desmontar o 1704 não tem segredo: remova os 4 pés de borracha para encontrar os parafusos que devem ser retirados para abri-lo. Dos lados do gabinete existem as famosas travas de plástico. Basta “afundar” a metade de baixo do gabinete e puxar. Remova a tampa superior para expor seu interior.

Placa principal

Análise por setores:

Setor lógico/digital/processamento + Switch

Temos nesta imagem, sentido anti-horário:

  • AOTOM A128168L – SDRAM 16Mx8 (Datasheet)
  • Broadcom BCM 6338 – 32 bits MIPS SoC @ 240MHz
  • Winbond W25X32VSIG – 4Mx8 SPI Flash(Datasheet)
  • BCM5325E – 10100 6-port Ethernet Switch (Brief)

Setor ADSL/linha telefônica

Abaixo do conector da linha telefônica (cinza), temos alguns capacitores e logo o transformador “ADSL”. Próximo aos conectores Ethernet (amarelos), temos os transformadores que casam os pares diferenciais entre o PHY e o meio externo. Em seguida temos ao lado direito do capacitor eletrolítico azul:

  • Broadcom BCM6301 – Driver de linha

O BCM6338 já está equipado com um transceiver ADSL e o que a Broadcom chama de Analog Front End (AFE), ambos cuidando do tratamento, conversão e processamento do sinal, em ambos os sentidos (e.g. modulação e demodulação). Esse é um dos “recursos” que a Broadcom oferece para soluções de baixo custo, é um SoC “X-Tudo”, eliminando a necessidade de vários componentes externos e desse modo cortando custos, diminuindo o BOM e conseqüentemente, o preço final para o consumidor. :)

Interessante notar que, do lado esquerdo do conector RJ11 da linha telefônica, temos o footprint de onde seria um conector USB. No site oficial, mencionam sobre uma interface USB Host “opcional”. Opcional?! É cada coisa… Bem, quem sabe seja possível popular os componentes que faltam e com algum ajuste no firmware, ou até uma outra versão diferente, consigamos ativar esta função e transformar o 1704 em um pequeno NAS? :) O BCM 6338 não tem USB host. Se existe algum variante deste dispositivo com tal capacidade -como informado no site-, não é esse disponível pela GVT no Brasil. Até mesmo o footprint é para receptáculo tipo B, padrão para devices. O que está no site é BS!

Setor de alimentação/power

Setor de alimentação ou power supply. Vários capacitores eletrolíticos, CIs reguladores Buck  e seus respectivos indutores, parte do circuito de chaveamento. Nada de muito interessante aqui.

Setor de RF

Na porção sudoeste da placa, encontramos o setor de RF, contendo, da direita para esquerda:

  • Broadcom BCM4312 – Transceiver RF para 802.11a/b/g
  • SiGe 2527L – RF Power Amp para 2.4GHz (Datasheet)

E no extremo esquerdo, a saída para a antena fixa.

Na face de baixo da placa não existem componentes.

Para quem percebeu, acima da CPU (o BGA com um dissipador prata sobre) temos um header de 4 pinos. E sim, é uma porta serial! A pinagem é, considerando o pino 1 sendo o mais à direita:

  1. +3.3V
  2. GND
  3. TX
  4. RX

Note que os níveis de tensão são 3.3V.

Segue o log escrito na interface serial, do momento do power up até o final da carga do sistema:

CFE version 4.28 for BCM96338 (32bit,SP,BE)
Build Date: Mon Aug 16 11:32:37 CST 2010 (cookiechen@SZ01007.DONGGUAN.CN)
Copyright (C) 2005-2009 SAGEM Corporation.

Serial flash device: name NX25P32, id 0xef15, size 4096KB
CPU type 0x29010: 240MHz
Total memory: 16777216 bytes (16MB)
Boot Address 0xb8000000

Board IP address                  : 192.168.1.1:ffffff00
Host IP address                   : 192.168.1.100
Gateway IP address                :
Run from flash/host (f/h)         : f
Default host run file name        : vmlinux
Default host flash file name      : bcm963xx_fs_kernel
Boot delay (0-9 seconds)          : 1
Board Id (0-2)                    : F@ST1704
Number of MAC Addresses (1-32)    : 11
Base MAC Address                  : 6c:2e:85:xx:xx:xx
PSI Size (1-64) KBytes            : 40  

*** Press any key to stop auto run (1 seconds) ***
Auto run second count down: 0
Booting from only image (0xb8010000) ...
Code Address: 0x80010000, Entry Address: 0x8020f000
Decompression OK!
Entry at 0x8020f000
Closing network.
Closing DMA Channels.
Starting program at 0x8020f000
Linux version 2.6.21.5 (liangr@SZ01007.DONGGUAN.CN) (gcc version 4.2.3) #1 Sat Dec 25 18:30:00 CST 2010

Serial flash device: name NX25P32, id 0xef15, size 4096KB

F@ST1704 prom init
CPU revision is: 00029010
Determined physical RAM map:
 memory: 00fa0000 @ 00000000 (usable)
On node 0 totalpages: 4000
  DMA zone: 31 pages used for memmap
  DMA zone: 0 pages reserved
  DMA zone: 3969 pages, LIFO batch:0
  Normal zone: 0 pages used for memmap
Built 1 zonelists.  Total pages: 3969
Kernel command line: root=31:0 ro noinitrd console=ttyS0,115200
brcm mips: enabling icache and dcache...
Primary instruction cache 16kB, physically tagged, 2-way, linesize 16 bytes.
Primary data cache 8kB, 2-way, linesize 16 bytes.
Synthesized TLB refill handler (21 instructions).
Synthesized TLB load handler fastpath (33 instructions).
Synthesized TLB store handler fastpath (33 instructions).
Synthesized TLB modify handler fastpath (32 instructions).
PID hash table entries: 64 (order: 6, 256 bytes)
Using 120.000 MHz high precision timer.
Dentry cache hash table entries: 2048 (order: 1, 8192 bytes)
Inode-cache hash table entries: 1024 (order: 0, 4096 bytes)
Memory: 13532k/16000k available (1770k kernel code, 2468k reserved, 269k data, 84k init, 0k highmem)
KLOB Pool 1 Initialized: 2097152 bytes <0x80c00000 ... 0x80e00000>
Calibrating delay loop... 238.59 BogoMIPS (lpj=119296)
Mount-cache hash table entries: 512
NET: Registered protocol family 16
Total Flash size: 4096K with 64 sectors
BLOG v1.0 Initialized
NET: Registered protocol family 8
NET: Registered protocol family 20
Time: MIPS clocksource has been installed.
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 512 (order: 0, 4096 bytes)
TCP bind hash table entries: 512 (order: -1, 2048 bytes)
TCP: Hash tables configured (established 512 bind 512)
TCP reno registered
squashfs: version 3.2-r2 (2007/01/15) Phillip Lougher
squashfs: LZMA suppport for slax.org by jro
io scheduler noop registered (default)
PPP generic driver version 2.4.2
NET: Registered protocol family 24
bcm963xx_mtd driver v1.0
File system address: 0xb8010100
brcmboard: brcm_board_init entry
BCM963XX Restore: Button Interrupt 0x4 mapping OK!
Start wps button kernel thread!
Serial: BCM63XX driver $Revision: 1.2 $
ttyS0 at MMIO 0xfffe0300 (irq = 10) is a BCM63XX
bcmxtmrt: Broadcom BCM6338A2 ATM Network Device v0.1 Dec 25 2010 18:28:14
TCP cubic registered
Initializing XFRM netlink socket
NET: Registered protocol family 1
NET: Registered protocol family 10
6WIND/LSIIT IPv6 multicast forwarding 0.1 plus PIM-SM/SSM with *BSD API
NET: Registered protocol family 17
NET: Registered protocol family 15
Ebtables v2.0 registered
802.1Q VLAN Support v1.8 Ben Greear <greearb@candelatech.com>
All bugs added by David S. Miller <davem@redhat.com>
VFS: Mounted root (squashfs filesystem) readonly.
Freeing unused kernel memory: 84k freed
init started:  BusyBox v1.00 (2010.12.25-10:32+0000) multi-call binary
mount: Mounting none on /proc/bus/usb failed: No such file or directory

BusyBox v1.00 (2010.12.25-10:32+0000) Built-in shell (msh)
Enter 'help' for a list of built-in commands.

Loading drivers and kernel modules...
pktflow: module license 'Proprietary' taints kernel.
Broadcom Packet Flow Cache learning via BLOG enabled.
Created Proc FS /procfs/fcache
Constructed Broadcom Packet Flow Cache v0.1 May  8 2009 16:23:45
bcmxtmcfg: bcmxtmcfg_init entry
adsl: adsl_init entry
IPv6: add_dev failed for dsl0
Broadcom BCMPROCFS v1.0 initialized
Broadcom BCM6338A2 Ethernet Network Device v0.3 Dec 25 2010 18:27:35
Config Switch via PHY Through MDIO Pseudo PHY Interface
BCM63xx_ENET: 100 MB Full-Duplex (auto-neg)
ethsw: found bcm5325e!
eth0: MAC Address: 6C:2E:85:XX:XX:XX
SDIOH mode switch from 1 to 2
available commands: sdio sdioh
---SDIO init SUCCEEDED--- blockmode capable
chipid 0x4014312
chip is bcm4312, use 512 bytes blksize
bcmsdh_attach, sdioh_attach successful, bcmsdh->sdioh 0x80cbcaf0
wl: srom not detected, using main memory mapped srom info (wombo board)
wl0: wlc_attach: MAC addr from system pool. id:0x776c0000
wl0: MAC Address: 6C:2E:85:XX:XX:XX
wl0: Broadcom BCM4318 802.11 Wireless Controller 5.10.120.0.cpe4.40.4
dgasp: kerSysRegisterDyingGaspHandler: wl0 registered
Trying to free already-free IRQ 25

===== Release Version 4.28.W1 (build timestamp 101225_1830) =====
wl_cnt= 1
device eth0 is not a slave of br0
device eth0 entered promiscuous mode
br0: port 1(eth0) entering learning state
br0: topology change detected, propagating
br0: port 1(eth0) entering forwarding state
WLmngr Daemon is running
optarg=0 shmId=0
device wl0 is not a slave of br0
device wl0 entered promiscuous mode
br0: port 1(eth0) entering disabled state
br0: port 1(eth0) entering learning state
br0: topology change detected, propagating
br0: port 1(eth0) entering forwarding state
br0: port 2(wl0) entering learning state
br0: topology change detected, propagating
br0: port 2(wl0) entering forwarding state
BcmAdsl_Initialize=0xC0078868, g_pFnNotifyCallback=0xC0098D34
pSdramPHY=0xA0FFFFF8, 0xA318F72 0x572D0151
AdslCoreSharedMemInit: shareMemAvailable=5072
AdslCoreHwReset:  AdslOemDataAddr = 0xA0FF4044
dgasp: kerSysRegisterDyingGaspHandler: dsl0 registered
bcmxtmcfg: Tx Addr 0x80cbba44, Tx Queue 0x80cbba64
bcmxtmrt: MAC address: 6c 2e 85 xx xx xx
Scratch pad is not initialized.
device wl0 left promiscuous mode
br0: port 2(wl0) entering disabled state
device wl0 is not a slave of br0
device wl0 entered promiscuous mode
br0: port 2(wl0) entering learning state
br0: topology change detected, propagating
br0: port 2(wl0) entering forwarding state
br0: port 2(wl0) entering disabled state
br0: port 1(eth0) entering disabled state
br0: port 2(wl0) entering learning state
br0: port 1(eth0) entering learning state
br0: topology change detected, propagating
br0: port 2(wl0) entering forwarding state
br0: topology change detected, propagating
br0: port 1(eth0) entering forwarding state
Scratch pad is not initialized.
Scratch pad is not initialized.
br0: port 2(wl0) entering disabled state
wlctl: Unsupported
InValid Device Pin in CFE
WPS Device PIN = 90310000
Setting SSID "GVT-DCXX"
wlctl: Unsupported
wlctl: Unsupported
wlctl: Unsupported
br0: port 2(wl0) entering learning state
br0: topology change detected, propagating
br0: port 2(wl0) entering forwarding state
device wl0 left promiscuous mode
br0: port 2(wl0) entering disabled state
device wl0 is not a slave of br0
device wl0 entered promiscuous mode
br0: port 2(wl0) entering learning state
br0: topology change detected, propagating
br0: port 2(wl0) entering forwarding state
br0: port 2(wl0) entering disabled state
br0: port 1(eth0) entering disabled state
br0: port 2(wl0) entering learning state
br0: port 1(eth0) entering learning state
br0: topology change detected, propagating
br0: port 2(wl0) entering forwarding state
br0: topology change detected, propagating
br0: port 1(eth0) entering forwarding state
Reaped 287
UPnP::upnp_init:UPnP daemon is ready to run
UPnP::upnp_request_handler:UPNP_CMD_DEV_ADD
UPnP::upnp_device_attach:br0: attach WFADevice.xml
UPnP::upnp_request_handler:Device command.

Percebemos que o firmware é baseado em Linux. Não encontrei o código fonte do kernel ou dos utilitários utilizados pela Sagemcom em seu site. Isso caracteriza-se como violação da licença GPL, e infelizmente é um acontecimento comum entre fabricantes e desenvolvedores de dispositivos embarcados. Aparentemente já existem reclamações com o GPL-Violations contra a Sagemcom.

Percebe-se também, que a senha padrão para a Wi-fi são os 10 últimos dígitos do serial do modem; enquanto os 4 últimos do SSID padrão (GVT-????), são também os 4 últimos do MAC de uma das interfaces, que ainda tenho que verificar.

_Edit: os fontes foram disponibilizados neste link . Grato ao Henrique pela informação!_

_Edit: última versão de firmware disponibilizada via TR-069 pela GVT (4.42a4GL_GVT_A2pB030t): Link _