PNX8950EH-Board

Aus Chaostreff Chemnitz

... auch unter dem Namen Pollin-Receiver-Board bekannt.

  • 400 MHz MIPSel
  • 256 MB RAM
  • 64 MB Flash
  • Linux, Windows CE

hacken

Erstinbetriebnahme/Test

  • unteren Scart-Anschluss mit Fernseher verbinden
  • 12 V an linken Stecker anlegen (+Pol vorn, Richtung Bedienteil), Stromaufnahme ca. 1,5 A
  • beide DIP-Schalter (hellblau mit weiß) auf off
  • Taster am äußeren Rand des Bedienteils drücken -> Ein
  • Fernseher zeigt Windows CE 5.0 Oberfläche

"Auslieferungszustand" herstellen

Um weiter basteln zu können, muss eine bestimmte Windows-Version installiert werden: [1]

Ein neu gekauftes Board kann eine andere Version enthalten, deshalb unbedingt reflash durchführen, sonst funktionieren alle folgenden Schritte nicht.

Reflash durchführen:

  • (Board Ausschalten)
  • alle Datei aus dem reflash_wince.rar auf einen FAT32-USB-Stick entpacken
  • Stick an die USB-Buchse unter der LAN-Buchse stecken
  • DIP-Schalter 1 auf on (Firmware-update-Mode)
  • Einschalten (mit Taster auf Bedienteil; entgegen anderer Angaben muss die Fernbedienung nicht benutzt werden)
  • Fernseher zeigt den Updateverlauf
  • Es werden 4 Dateien geladen (7-Segment-Anzeige läuft 4 mal bis 100 %)
  • Windows starten: DIP-Schalter 1 wieder auf off und Reset (Taste hinten) + Einschalttaste

Neue Variante

Es gibt eine relativ sichere Variante. Dazu wird das Elecard-Image benötigt. Es wird gleich das große U-Boot geflasht und bei Bedarf das Elecard-Linux.

Images: [2]

Anleitung: [3]

Flashen

  • DIP-Schalter 1 auf off
  • Board anschalten (Windows CE 5.0 startet)
  • alle Dateien aus u-boot-stick-elecard.tar.gz auf FAT32-USB-Stick kopieren
  • Stick an USB-Buchse auf Rückseite stecken
  • flashme.exe starten
  • "Status: ready..." muss erscheinen, erscheint "Status: error...", muss der "Auslieferungszustand" wiederhergestellt werden.
  • ersten Button klicken: U-Boot wird geflasht
  • warten bis alles fertig ist
  • zweiten Button klicken: Linux wird geflasht
  • warten bis fertig

Jetzt sind die nötigen Dateien drauf. Leider funktioniert Windows CE nicht mehr. Auch wenn das Rettungs-WinCE geflasht wird (3. Button), geht dieses nicht.

Board kann jetzt U-Boot und Linux starten.

Linux starten

Beim Neustart kommen noch 3 Zeilen des Flashers auf der J2. Das richtige U-Boot kommt allerdings auf J33:

  • Pin 1 (markiert): GND
  • Pin 2: Board->PC
  • Pin 4: PC->Board
  • Baud: 38400
  • (Direktverbindung mit PC, keine Pegelwandler)

Das Elecard-Linux kann vom Flash gebootet werden:

  • Board anschalten, U-Boot-Konsole auf J33
  • Autostart scheitert: "ERROR: can't get kernel image!"
  • Partitionen mounten, mit: mtdparts default
  • Linux starten: boot
  • Linux holt sich per DHCP eine IP-Adresse über die LAN-Buchse auf der Rückseite
  • nach erfolgreichem Bezug der Adresse ist die Konsole verfügbar

Linux automatisch starten

Damit Linux nach dem Einschalten automatisch startet muss U-Boot konfiguriert werden.

  • U-Boot-Konsole
  • Alle Variablen anzeigen: printenv
  • nandboot einrichten: setenv nandboot 'mtdparts default;nboot Linux;run ideargs addip;bootm'
  • diese Variable dauerhaft speichern (auch nach reboot verfügbar): saveenv
  • starten geht jetzt auch mit: run nandboot
  • autostart einrichten: setenv bootcmd 'run nandboot'
  • speichern: saveenv
  • neustart: reset
  • jetzt sollte das Board hochfahren
  • wenn U-Boot-Fehlermeldungen kommen, setenv nandboot nochmal durchführen, am besten Zeile kopieren, darauf achten, dass keine Leerzeichen oder ähnliches angehängt werden.

neues rootFS

Es ist möglich ein Debian-rootFS mit dem Elecard-Kernel zu verwenden. Das rootFS gibt es hier: [4]

  • mit gparted zwei primäre ext3-Partitionen auf einen USB-Stick anlegen
  • auf sda1 das rootFS entpacken mit tar -xvjf
  • Stick an Board anstecken
  • Elecard-Kernel booten
  • ssh auf Board mit root/vdr (ip-Adresse? -> die vom dhcp-Server)
  • Ausschalten: reboot
  • niemals direkt ausschalten oder reset drücken, sonst geht das rootFS kaputt und das Bpoard startet nicht mehr -> siehe Debug

Debug

Wenn man etwas nicht funktioniert:

  • "unhandled paging request on adress 00000000" beim Boot: rootFS ist beschädigt, einfach check mit gparted und es funktioniert wieder (wichtig: Stick safely removen)

Alte Variante

Beschreibung unvollständig. Bitte nicht versuchen, die Neue Variante funktioniert.

kleines U-Boot flashen

Um Linux zu starten wird ein Bootloader gebraucht. Dieser kann allerdings zu große um jetzt aufgespielt zu werden. Es wird deshalb erst ein Kleiner installiert, danach der Große.

Das kleine U-Boot: [5]

  • U-Boot.ZIP auf einen FAT32-USB-Stick entpacken
  • Board normal hochfahren (alle Dip-Schalter auf off, am Bedienteil einschalten)
  • USB-Stick und USB-Maus über Hub an Rückseite anstecken
  • myDevices öffnen, USB-Stick darin öffnen, flashme.exe starten
  • Fenster mit "Status: ready..." muss sich öffnen, wenn "Status: error..." dasteht, ist das falsche Windows-Image drauf -> "Auslieferungszustand" wieder herstellen
  • ersten Button klicken -> kleines U-Boot wird geflasht (klassisches Firmware-Update-Programm für "Auslieferungszustand" wiederherstellen wird jetzt ersetzt)
  • zweiter Button: irgend ein Linux-Image wird geflasht (anderer Speicherbereich), kann zusätzlich gemacht werden
  • dritter Button: verändertes Windows-CE, nicht unbedingt flashen, soll flashme automatisch starten, bootet nicht bis zur grafischen Oberfläche, sondern hängt im Ladebalken fest

großes U-Boot flashen

Nachdem nun das kleine U-Boot drauf ist, kann das große U-Boot mit mehr Funktionen aufgespielt werden. Dazu muss das kleine U-Boot gestartet werden:

  • DIP-Schalter 1 auf on
  • Board einschalten (Taste an Bedienteil)

Nach der Linux-Installation

Determined physical RAM map: memory: 07000000 @ 00000000 (usable) Initrd not found or empty - disabling initrd Built 1 zonelists. Total pages: 28448 Kernel command line: console=ttyS1,38400n8 stb810_display=pal nomainapp=1 root=/dev/sda1 rw ip=192.168.100.215 root=/dev/sda1 rw ip=192.168.100.215 root=/dev/sda1 rw ip=192.168.100.215 root=/dev/sda1 rw Primary instruction cache 16kB, physically tagged, 2-way, linesize 32 bytes. Primary data cache 16kB, 4-way, linesize 32 bytes. Synthesized TLB refill handler (23 instructions). Synthesized TLB load handler fastpath (32 instructions). Synthesized TLB store handler fastpath (32 instructions). Synthesized TLB modify handler fastpath (31 instructions). PID hash table entries: 512 (order: 9, 2048 bytes) Using 250.714 MHz high precision timer. Console: colour dummy device 80x25 Dentry cache hash table entries: 16384 (order: 4, 65536 bytes) Inode-cache hash table entries: 8192 (order: 3, 32768 bytes) Memory: 107648k/114688k available (2841k kernel code, 6996k reserved, 518k data, 2044k init, 0k highmem) Mount-cache hash table entries: 512 NET: Registered protocol family 16 registering PCI controller with io_map_base unset SCSI subsystem initialized usbcore: registered new interface driver usbfs usbcore: registered new interface driver hub usbcore: registered new device driver usb 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: 4096 (order: 3, 32768 bytes) TCP bind hash table entries: 4096 (order: 2, 16384 bytes) TCP: Hash tables configured (established 4096 bind 4096) TCP reno registered NTFS driver 2.1.28 [Flags: R/O]. JFFS2 version 2.2. (NAND) (C) 2001-2006 Red Hat, Inc. io scheduler noop registered io scheduler anticipatory registered (default) Register GPIO SPI device Serial: PNX8XXX driver $Revision: 1.2 $ pnx8xxx-uart: ttyS0 at MMIO 0xbbe4a000 (irq = 27) is a PNX8XXX pnx8xxx-uart: ttyS1 at MMIO 0xbbe4b000 (irq = 28) is a PNX8XXX natsemi dp8381x driver, version 2.1, Sept 11, 2006 originally by Donald Becker <becker@scyld.com> http://www.scyld.com/network/natsemi.html 2.4.x kernel port by Jeff Garzik, Tjeerd Mulder PCI: Enabling device 0000:00:0a.0 (0006 -> 0007) natsemi eth0: NatSemi DP8381[56] at 0x20092000 (0000:00:0a.0), 00:17:31:fb:e4:cd, IRQ 55, port TP. Driver for NAND Flash on the PNX8550 XIO bus (Mar 15 2010-17:54:27) Auto detected a >= 64MByte device on a 8 bit bus NAND device: Manufacturer ID: 0xad, Chip ID: 0x76 (Hynix NAND 64MiB 3,3V 8-bit) Scanning device for bad blocks Creating 8 MTD partitions on "NAND 64MiB 3,3V 8-bit": 0x00000000-0x00004000 : "microBTM" 0x00004000-0x00084000 : "U-Boot" 0x00084000-0x0008c000 : "Env" 0x0008c000-0x00094000 : "bbt" 0x00094000-0x00894000 : "Linux" 0x00894000-0x03b94000 : "ROMFS" 0x03c00000-0x03ff8000 : "WinCE" 0x03ff8000-0x04000000 : "Info" ehci_hcd 0000:00:09.2: EHCI Host Controller ehci_hcd 0000:00:09.2: new USB bus registered, assigned bus number 1 ehci_hcd 0000:00:09.2: irq 55, io mem 0x20093200 ehci_hcd 0000:00:09.2: USB 2.0 started, EHCI 0.95, driver 10 Dec 2004 usb usb1: configuration #1 chosen from 1 choice hub 1-0:1.0: USB hub found hub 1-0:1.0: 4 ports detected pnx8550-ohci pnx8550-ohci: PNX8550 OHCI pnx8550-ohci pnx8550-ohci: new USB bus registered, assigned bus number 2 pnx8550-ohci pnx8550-ohci: irq 13, io mem 0x1be48000 usb usb2: configuration #1 chosen from 1 choice hub 2-0:1.0: USB hub found hub 2-0:1.0: 2 ports detected ohci_hcd 0000:00:09.0: OHCI Host Controller ohci_hcd 0000:00:09.0: new USB bus registered, assigned bus number 3 ohci_hcd 0000:00:09.0: irq 55, io mem 0x20090000 usb usb3: configuration #1 chosen from 1 choice hub 3-0:1.0: USB hub found hub 3-0:1.0: 2 ports detected ohci_hcd 0000:00:09.1: OHCI Host Controller ohci_hcd 0000:00:09.1: new USB bus registered, assigned bus number 4 ohci_hcd 0000:00:09.1: irq 55, io mem 0x20091000 usb usb4: configuration #1 chosen from 1 choice hub 4-0:1.0: USB hub found hub 4-0:1.0: 2 ports detected USB Universal Host Controller Interface driver v3.0 Initializing USB Mass Storage driver... usbcore: registered new interface driver usb-storage USB Mass Storage support registered. mice: PS/2 mouse device common for all mice i2c /dev entries driver TCP cubic registered NET: Registered protocol family 1 NET: Registered protocol family 17 Bridge firewalling registered 802.1Q VLAN Support v1.8 Ben Greear <greearb@candelatech.com> All bugs added by David S. Miller <davem@redhat.com> ieee80211: 802.11 data/management/control stack, git-1.1.13 ieee80211: Copyright (C) 2004-2005 Intel Corporation <jketreno@linux.intel.com> eth0: DSPCFG accepted after 0 usec. Sending DHCP requests .....<6>eth0: Autonegotiation advertising 0x5e1 partner 0xcde1. eth0: link up. eth0: Setting full-duplex based on negotiated link capability. .<5>eth0: increased tx threshold, txcfg 0xd0f01004. timed out! IP-Config: Reopening network devices... eth0: DSPCFG accepted after 0 usec. eth0: link up. eth0: Setting full-duplex based on negotiated link capability. Sending DHCP requests .<5>eth0: increased tx threshold, txcfg 0xd0f01004. ., OK IP-Config: Got DHCP answer from 192.168.1.1, my address is 192.168.1.171 IP-Config: Complete: device=eth0, addr=192.168.1.171, mask=255.255.255.0, gw=192.168.1.1, host=192.168.1.171, domain=lan, nis-domain=(none), bootserver=192.168.1.1, rootserver=192.168.1.1, rootpath= Freeing unused kernel memory: 2044k freed Algorithmics/MIPS FPU Emulator v1.5 Loading profile... done Mount fstab... done Remount / read-write... done Mounting new Root. enabling SATA modules...sata_sil 0000:00:08.0: Applying R_ERR on DMA activate FIS errata fix ata1: SATA max UDMA/100 cmd 0xc0058080 ctl 0xc005808a bmdma 0xc0058000 irq 55 ata2: SATA max UDMA/100 cmd 0xc00580c0 ctl 0xc00580ca bmdma 0xc0058008 irq 55 scsi0 : sata_sil ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 310) ata1.00: ATA-8: Hitachi HTS545050B9A300, PB4OC66G, max UDMA/133 ata1.00: 976773168 sectors, multi 0: LBA48 NCQ (depth 0/32) ata1.00: configured for UDMA/100 scsi1 : sata_sil ata2: SATA link down (SStatus 0 SControl 310) scsi 0:0:0:0: Direct-Access ATA Hitachi HTS54505 PB4O PQ: 0 ANSI: 5 SCSI device sda: 976773168 512-byte hdwr sectors (500108 MB) sda: Write Protect is off SCSI device sda: write cache: enabled, read cache: enabled, doesn't support DPO or FUA SCSI device sda: 976773168 512-byte hdwr sectors (500108 MB) sda: Write Protect is off SCSI device sda: write cache: enabled, read cache: enabled, doesn't support DPO or FUA sda: sda1 sda2 sda3 sd 0:0:0:0: Attached scsi disk sda done Creating device nodes...done Setup mdev as hotplug handler... done Set log level... Populate /dev... Load luddite and gpio/mmio/rtc...Get display mode and load i2c and fb modules... Detect GPIO function...done Get System ID... Restore hotplug handler... done Restore log level... Unloading modules... Shutting down RTC driver Shutting down PNX8550 MMIO Driver Shutting down PNX8550 GPIO driver Shutting down NXP /proc entries driver done done Mount nfs root /dev/sda1... kjournald starting. Commit interval 5 seconds EXT3 FS on sda1, internal journal EXT3-fs: recovery complete. EXT3-fs: mounted filesystem with ordered data mode. done Switch root INIT: version 2.86 booting .udev/ already exists on the static /dev! (warning). Starting the hotplug events dispatcher: udevdudevd[431]: main: the kernel does not support inotify, udevd can't monitor rules file changes . Synthesizing the initial hotplug events...done. Waiting for /dev to be fully populated...udevd-event[506]: rename_netif: error changing netif name eth0 to eth1: Device or resource busy Registering SPI driver Register ProSLIC driver done. Setting the system clock. Cannot access the Hardware Clock via any known method. Use the --debug option to see the details of our search for an access method. Unable to set System Clock to: Sat Jan 1 00:00:26 UTC 2005 (warning). Activating swap...done. Setting the system clock. Cannot access the Hardware Clock via any known method. Use the --debug option to see the details of our search for an access method. Unable to set System Clock to: Sat Jan 1 00:00:27 UTC 2005 (warning). Cleaning up ifupdown.... Loading kernel modules...done. Checking file systems...fsck 1.41.3 (12-Oct-2008) done. Setting kernel variables (/etc/sysctl.conf)...done. Mounting local filesystems...kjournald starting. Commit interval 5 seconds EXT3 FS on sda2, internal journal EXT3-fs: recovery complete. EXT3-fs: mounted filesystem with ordered data mode. done. Activating swapfile swap...done. Setting up networking.... Configuring network interfaces...done. Luddite version 3, exported Mon Apr 25 10:40:08 BST 2005 TM0: detected clock 270000000 lud_core: Registering devfs device 0/lud TM1: detected clock 270000000 lud_core: Registering devfs device 1/lud NXP /proc entries driver (Aug 13 2007-11:59:40) dspinfo: Initialising DSP Info Driver PNX8550 MMIO Driver (Aug 13 2007-11:59:38) dspmem: Initialising DSP memory Driver Philips PNX8550 Demux HW driver (Aug 13 2007-11:59:14) DVB: registering new adapter (pnx8550vmsp0). DVB: registering new adapter (pnx8550vmsp1). DVB: registering new adapter (pnx8550pdma0). DVB: registering new adapter (pnx8550pdma1). NXP PNX8550 DVB adapter driver Analog Backend driver (Aug 13 2007-11:59:55) AK470X (AV Scart switch) driver (Aug 13 2007-11:59:57) - Device AK4706 Loopthrough disabled Using specified video mode (PAL-CVBS) vdenc0: PNX8550 Internal Vdenc video denc device Dbg driver (Feb 20 2008-12:40:20) TriMedia RPC driver Debug Buffer Print driver (Aug 13 2007-11:59:09) RTC driver (Aug 13 2007-11:59:41) PNX8550 GPIO driver (Aug 13 2007-11:59:32) SAA8510 (Anabel) driver Using specified video mode (PAL-RGB) vdenc1: PNX8510 Driver video denc device STB-810 ALSA Audio Driver (Aug 13 2007-11:59:07) pnxdraw: Initialised (Compiled Aug 13 2007-11:59:22) Cannot open luddite device - Error = -1 open tmdev: No such file or directory Cannot open luddite device - Error = -1 open tmdev: No such file or directory INIT: Entering runlevel: 2 Starting enhanced syslogd: rsyslogd. Starting OpenBSD Secure Shell server: sshd. ################################################## ## LIRC IS NOT CONFIGURED ## ## ## ## read /usr/share/doc/lirc/html/configure.html ## ################################################## Additional hint: Either /etc/lirc/lircd.conf or /etc/lirc/hardware.conf doesn't exist or either of the two has the string UNCONFIGURED in it at some important place. Try: 'dpkg-reconfigure lirc' Starting lirc daemon:. Starting Linux Video Disk Recorder: vdr Searching for plugins (VDR 1.6.0-2/1.6.0) (cache hit): xvdr streamdev-server. Starting VDR Webadministration interface: - aborted (to enable the daemon, edit /etc/default/vdradmin-am)Starting periodic command scheduler: crond. eth0: increased tx threshold, txcfg 0xd0f01006. eth0: increased tx threshold, txcfg 0xd0f01008.