Re: Rooting Toon (or boxx)
Posted: Sun Jan 28, 2018 12:51 pm
Thanks marcel, will give it a try
Domotica - Home Automation Forum
https://www.domoticaforum.eu/
Code: Select all
##### Toegang tot en wijziging van de bootloaderinstellingen #####
## methode 1: via het wachtwoord ##
Je kunt jezelf toegang verschaffen tot de bootloader door het bootloader
wachtwoord in te geven (via Ctrl+C, Ctrl+V, gewoon typen gaat te traag).
Zodra toon opstart zie je in het putty scherm de output van het bootproces.
Op enig moment volgt dan:
Enter password - autoboot in 2 sec.
Tot nu toe zijn twee bootloaderwachtwoorden gevonden, behorend bij twee versies
van de bootloader. Deze versie wordt weergegeven bij het opstarten van toon:
U-Boot 2010.09-R6 (Mar 14 2012 - 11:15:10)
CPU: Freescale i.MX27 at 400.168 MHz
... etc.
De wachtwoorden zijn:
Bootloader versie wachtwoord
U-Boot 2010.09-R6 f4E9J
U-Boot 2010.09-R8 3BHf2
Het wachtwoord is hoofdlettergevoelig, dus bijvoorbeeld f is niet hetzelfde
als F.
Copy/paste het wachtwoord (met <enter> erachter) in de putty console zodra
erom gevraagd wordt. Dit stopt de bootloader en presenteert de U-Boot prompt:
U-Boot>
Let op dat het wachtwoord niet zichtbaar is als je het ingeeft. Je ziet pas
wat je intikt als U-Boot een seriele console voor je geopend heeft.
Als, om wat voor reden dan ook, je niet in staat bent om het wachtwoord in
te geven, of je hebt een toon met een tot nu toe onbekend wachtwoord, dan
kun je de bootloader onderbreken door de NAND chip kort te sluiten, of
de bootloader software van toon dumpen (met behulp van JTAG hardware en
-software). Zeker het laatste is nogal gedoe, ga ik hier niet op in.
## methode 2: NAND chip tijdelijk kortsluiten ##
Je kunt in het boot-menu terecht komen door op het goede moment tijdens
opstarten een paar verbindingen van de NAND chip kort te sluiten, met een
klein metalen schroevendraaiertje.
Op het moment dat "Checking crc" of woorden van die strekking in je putty
console verschijnen, sluit je pin 8 en 9 (!CE en !RE, NOT chip enable en
NOT read enable) kort. Dit geeft een zgn. crc error in de bootloader, die
reageert met een interactieve prompt (om e.e.a. te kunnen verhelpen).
Handig.
NB: De NAND chip is de enige Samsung chip op de printplaat.
##### Dichtgespijkerde versies van U-Boot #####
Vanaf begin 2016 wordt er een nieuwere versie van de bootloader op toon
geinstalleerd. Deze geeft de volgende versieregel bij het opstarten:
U-Boot 2010.09-R10 (Dec 14 2015 - 19:28:18)
Deze versie vraagt ook om een wachtwoord, maar dat is onbekend en nogal wat
beter versleuteld dan in vorige versies (SHA256 encryptie). Toons met een
serienummer beginnend met 16 (en hoger waarschijnlijk) hebben deze versie.
Uit eerdere discussies met Quby volgde dat elke toon nu z'n eigen wachtwoord
heeft (dus dikke kans dat het te maken heeft met de naam van je toon
(eneco-001-xxxxxx), de MAC adressen, serienummers of andere individuele
kenmerken van je toon). Leuke info, maar daar heben we dus niks aan.
De schroevendraaiermethode werkt bij deze toons ook niet, als je de
bootloader onderbreekt krijg je het volgende:
---------------------------------------------------------
Welcome to the bootloader, adventurous adventurer.
We congratulate you on your perseverance and inventivity!
Would you like an easier way in?
Please visit quby.com/open-system for more information.
Game on! :)
---------------------------------------------------------
De link geeft je de mogelijkheid om Quby toon voor je te laten rooten,
(waarschijnlijk gooien ze de VPN keys weg, en zetten ze de software in
standalone mode). Heb ik geen ervaring mee. Als je dit niet wilt, rest als
enige mogelijkheid om een ander bootloader te nemen, en die met JTAG
hardware naar je toon te uploaden.
##### Benodigdheden, naast de eerder genoemde spullen #####
1: JTAG interface. Ik gebruik een kloon JLink, gekocht op ebay voor $15,-- of
daaromtrent.
2: Bekabeling voor de JTAG interface van toon. Zul je waarschijnlijk zelf
moeten maken, zie hierboven voor pinbezetting.
3: OpenOCD software, versie 0.9.0 of later. Hier op te halen:
https://sourceforge.net/projects/openocd/files/openocd/
(en leer ermee werken!)
4: Een telnet client.
5: U-boot image en een toon configuratiefile, voor openocd.
Te vinden in de downloads thread van dit forum.
##### Te verrichten handelingen #####
1: Pak de bootloader en ed20.cfg file uit op een handige plek, bij elkaar.
2: Koppel de JTAG interface en de seriele interface aan toon en je PC.
3: Open een terminal programma voor je seriele interface, en eentje voor je
telnet client.
4: Start toon op.
5: Open een root shell voor OpenOCD en start openocd:
$ openocd -f <jouw_interface_config_file> -f ed20.cfg
6: Open een telnet sessie om openocd aan te sturen:
telnet localhost 4444
7: Halt de processor, via het openocd commando soft_reset_halt:
> soft_reset_halt
requesting target halt and executing a soft reset
target halted in ARM state due to debug-request, current mode: Supervisor
cpsr: 0x000000d3 pc: 0x00000000
MMU: disabled, D-Cache: disabled, I-Cache: disabled
7a: Als je een raspberry pi als JTAG interface gebruikt, voer dan ook nog uit:
> reset halt
Dit stopt de processor bij deze JTAG hardware.
8: Upload het u-boot image naar toon's geheugen. Het upload adres is 0xa1f00000:
> load_image u-boot.bin 0xa1f00000
166504 bytes written at address 0xa1f00000
downloaded 166504 bytes in 2.548540s (63.802 KiB/s)
9: Herstart de processor op het u-boot upload adres:
> resume 0xa1f00000
Dit resulteert in een reboot, en geeft de mogelijkheid om de bootloader te
onderbreken.
10: Knip/plak het wachtwoord (toon + <enter>) in de seriele terminal. Dit stopt
de bootloader en geeft de u-boot prompt:
U-Boot>
Ik zou het bijna vergeten: Game over ... (voorlopig, dan toch ;-) )
Voor Mensen die een raspberry pi 2 of 3 willen gebruiken voor de JTAG procedure
heeft rboers een zeer gedetailleerde beschrijving gemaakt.
Die is hier te vinden:
https://www.domoticaforum.eu/viewtopic.php?f=87&t=11230&start=210#p83745
Dank je, rboers, voor deze uitgebreide beschrijving.
##### U-Boot environment aanpassen #####
Zodra je in het U-Boot menu bent aangekomen, kun je een aantal commando's
uitvoeren:
De eerste is printenv, en geeft het volgende (bootloader versie
U-Boot 2010.09-R8, R6 lijkt er veel op):
U-Boot> printenv
bootdelay=2
baudrate=115200
loadaddr=0xA1000000
bootdelay=2
mtdids=nand0=mxc_nand
mtdparts=mtdparts=mxc_nand:1M(u-boot)ro,512K(u-boot-env)ro,1536K(splash-image),3M(kernel),3M(kernel-backup),119M(rootfs)
mtdparts_kernel=mtdparts=mxc_nand:512K@0x00100000(u-boot-env)ro,1536K(splash-image),3M(kernel),3M(kernel-backup),119M(rootfs)
mem=128M
autoload=no
backlight_brightness=50
baudrate=115200
console=ttymxc0
addtty=setenv bootargs ${bootargs} console=${console},${baudrate}
addmtd=setenv bootargs ${bootargs} ${mtdparts_kernel}
nandargs=setenv bootargs ubi.mtd=4 root=ubi0:rootfs rw rootfstype=ubifs
boot_nand=run nandargs addmtd addtty addmisc; nand read ${loadaddr} kernel; bootm ${loadaddr}
boot_nand_backup=run nandargs addmtd addtty addmisc; nand read ${loadaddr} kernel-backup; bootm ${loadaddr}
bootcmd=run boot_nand
splashimage=0x180000
ethact=FEC
sn=xx-xx-xxx-xxx
pn=6500-1400-1200
software_compatibility=0
manufacture_date=2014/04
ethaddr=aa:bb:cc:dd:ee:ff
addmisc=setenv bootargs ${bootargs} mem=${mem} lpj=999424
bootargs=ubi.mtd=4 root=ubi0:rootfs rw rootfstype=ubifs mtdparts=mxc_nand:512K@0x00100000(u-boot-env)ro,1536K(splash-image),3M(kernel),3M(kernel-backup),119M(rootfs) c4
partition=nand0,0
mtddevnum=0
mtddevname=u-boot
Environment size: 1280/131068 bytes
U-Boot>
Het bootloader environment bevat een aantal commando's die bij opstarten
uitgevoerd worden. We passen de laatste aan (addmisc, dat is het laatste
stukje commando van boot_nand, de standaard opstartregel):
Edit addmisc als volgt (letterlijk deze tekst, een tikfout is dodelijk):
setenv addmisc setenv bootargs \$\{bootargs\} mem=\$\{mem\} lpj=999424 init=/bin/sh
Overigens heb ik geen idee wat lpj=999424 betekent, in mijn toon zit het er.
In oudere bootloaderversies zit het niet, zou niks mogen uitmaken, zolang je
maar exact de oorspronkelijke addmisc regel kopieert (en let op de backslashes,
voor de $ en { en } tekens).
Vervolg daarna het bootproces door het volgende in te tikken:
run boot_nand
en druk op <enter>.
Aan het einde van het bootproces opent U-Boot een command shell of cli, of
console, of hoe je 't ook noemen wilt, in putty. Je kunt nu de opstartfiles
van toon gaan editen. Let niet op de foutmelding
/bin/sh: can't access tty; job control turned off
die heeft geen effect.
##### Aanpassen van de boot scripts en passwd bestand #####
Voeg een seriel console toe aan /etc/inittab; lokaliseer de volgende regel
in /etc/inittab:
# HCBv2 static stuff
en edit (software versie < 3.0 (shockwave flash GUI)) met vi of nano:
# HCBv2 static stuff
ovpn:2345:respawn:/usr/sbin/openvpn --config /etc/openvpn/vpn.conf --verb 0 >/dev/null 2>&1
flas:5:respawn:/usr/bin/startflash >/dev/null 2>&1
# add serial console access: (added, MR!):
gett:235:respawn:/sbin/getty -L 115200 ttymxc0 vt102
of: (toon SW 3.x.y, qt GUI):
# HCBv2 static stuff
ovpn:2345:respawn:/usr/sbin/openvpn --config /etc/openvpn/vpn.conf --verb 0 >/dev/null 2>&1
qtqt:245:respawn:/usr/bin/startqt >/dev/null 2>&1
# add serial console access: (added, MR!):
gett:235:respawn:/sbin/getty -L 115200 ttymxc0 vt102
NOTITIE: Vanaf firmware 4.9.23, is busybox vervangen en heeft getty niet langer
aan boord. Daardoor heeft het toevoegen van de regel voor getty geen effect meer.
Een oplossing voor dit probleempje wordt een stukje verderop gegeven, bij de
installatie van dropbear. Als je toon deze firmware (of nieuwer) heeft, kun je
het beste nog even niet rebooten, maar lees even door tot in de
dropbear-installatie sectie.
Nu je er toch bent, maak van de openVPN regel commentaar, met een hekje (#):
#ovpn:2345:respawn:/usr/sbin/openvpn --config /etc/openvpn/vpn.conf --verb 0 >/dev/null 2>&1
Door deze regel uit te schakelen zoekt toon niet langer verbinding met het SC
(en uploadt geen data meer). Als je geen Eneco abonnement hebt, is dit
waarschijnlijk wat je wilt. In het andere geval: afblijven.
(Voor toon sw 3.0 en later):
Lokaliseer het wachtwoordenbestand /etc/passwd en pas aan:
root:DISABLED:0:0:root:/root:/bin/sh
wordt (DISABLED weg):
root::0:0:root:/root:/bin/sh
en sla op. Anders kom je er later niet in.
##### Terug naar de originele bootloaderconfiguratie en cli toegang #####
Als je /etc/inittab en /etc/passwd aangepast hebt, reboot je toon door op
de reset-knop te drukken.
Wacht een tijdje, en je komt terug in het normale gedrag van toon, nu met een
login shell. Omdat tijdens de U-Boot hack niks definitief opgeslagen is, start
toon weer normaal op (zonder init=/bin/sh).
Let op dat de console output van alle netwerkinterfaces en de framebuffer ook
naar dezelfde console gestuurd wordt. Dat betekent dat er een heleboel tekst in
de console verschijnt zonder dat je wat intikt. De login-prompt voor de shell
wordt er gewoon tussendoor gegooid. Zoek naar het volgende:
...
Eneco Toon by Quby
eneco-001-xxxxxx login:
...
in de console output. Het kan verstopt zitten in een lawine aan andere tekst
die op de console afgedrukt wordt. Zodra je deze tekst (de login prompt) ziet,
kun je doorgaan naar de volgende stap.
Om Patrick Volkerding, lead developer van Slackware te citeren:
You may now login as "root".
Dus tik in:
root
en je bent volledig de baas over je eigen toon.
Stel wel even een STERK wachtwoord in. Tik in:
passwd
en volg de stappen op het scherm.
Zet je toon nog niet in elkaar, we hebben de seriele poort nog nodig om de
netwerkverbindingen met de buitenwereld open te zetten.
Code: Select all
killall qt-gui; /HCBv2/sbin/qt-gui -platform linuxfb -plugin Tslib --daemon 2>&1
Thank you! You pointed me at the right direction, in verbose mode I saw that I made an error in a config file. All is working nowmarcelr wrote:When you have two dots, the basic part of the operating system is loaded (/sbin/init is running) and the qt-gui is starting. If it doesn't go any further than that, I would first check which processes are running use the top command for that) and see if qt-gui is there.
If that's the case, you probably edited some stuff in the /HCBv2/qml/* directories, and made a mistake.
You can find errors in the gui by restarting it in a more verbose run mode:Code: Select all
killall qt-gui; /HCBv2/sbin/qt-gui -platform linuxfb -plugin Tslib --daemon 2>&1
Connect from your pc to your toon using a SSH clientglobegrabber wrote:Thanks Marcelr for yours support,
I have managed by manual to install dropbear,
only thing i hoped for is to get the serial console but this what i get returned;
this is the last part of booting up:
Starting Dropbear SSH server: dropbear.
What to do next to get to the login?