[OpenWrt-Devel] [PATCH] ramips: mt7621: use lzma-loader for D-Link DIR-860L B1

Stijn Segers foss at volatilesystems.org
Tue Apr 21 11:52:51 EDT 2020


Hi,


Op dinsdag 21 april 2020 om 15:12 schreef Stijn Segers 
<foss at volatilesystems.org>:
> Hi Szabolcs,
> 
> Op maandag 20 april 2020 om 11:01 schreef Szabolcs Hubai 
> <szab.hu at gmail.com>:
>> Hello,
>> 
>> Stijn Segers <foss at volatilesystems.org> ezt írta (időpont: 2020. 
>> ápr.
>> 20., H, 9:25):
>>> 
>>>  Hi Szabolcs,
>>> 
>>>  Op zondag 19 april 2020 om 20u49 schreef Szabolcs Hubai
>>>  <szab.hu at gmail.com>:
>>>  > This device has trouble extracting big kernel from flash,
>>>  > and supports LZMA compressed kernels only.
>>>  >
>>>  > Using OpenWrt kernel loader saves us 64 KB compared to the 
>>> dictionary
>>>  > size limiting workaround.
>>>  >
>>>  > Factory image sizes (commit: 5f126c541a74) with 
>>> "CONFIG_ALL_KMODS=y":
>>>  > - original ("-d23", default): 4784188 bytes, LZMA ERROR 1
>>>  > - with "-d19": 4915260, LZMA ERROR 1
>>>  > - with "-d18": 4915260, diff to original: +128 KB
>>>  > - with "-d17": 4980796, diff to original: +192 KB
>>>  > - with this patch: 4849724, diff to original: +64 KB
>>>  >
>>>  > To save some CPU cycle, use minimal compression ("-a0") for the 
>>> LZMA
>>>  > compressed uImage.
>>>  >
>>>  > The most robust solution would use a different loader,
>>>  > which reads the compressed kernel directly from the flash.
>>>  > See the thread at [0] for more details!
>>> 
>>>  Thanks for giving the DIR-860L some love. I'd like to test (in 
>>> fact I
>>>  already
>>>  did with your previous patches) and hook up serial, because first 
>>> boot
>>>  will
>>>  work but any reboot (whether I change settings or not) will just 
>>> give
>>>  me a
>>>  blinking orange LED. Like clockwork.
>>> 
>>>  Would you happen to have any pointers (or pictures) on how to open 
>>> the
>>>  case?
>>>  I have unscrewed the bottom but there seem to be latches on the 
>>> inside
>>>  (judging
>>>  from the FCC pictures) and I am unable to pry it open.
>>> 
>>>  Thanks and sorry for the topic hijack :-).
>>> 
>>>  Stijn
>>> 
>> 
>> I got my clue from the "D-LINK DIR-860L - disassemble" titled 
>> YouTube video. [0]
>> In short:
>> - 3 screws on the bottom, under the pads: if you are looking at the
>> bottom of the router, the screws are under the left, the right and 
>> the
>> bottom pads
>> - one, "DIR-860L" titled sticker on the top, with a "cut in" starting
>> point in the front, where the leds reside
> 
> 
> Thanks! That sticker turned out to be so sturdy - it doesn't look or 
> feel like a sticker *at all*. That's what got me.
> 
> So, I have serial now. A few things I can tell from my side:
> - vanilla master image (yesterday's image): does not boot, which is 
> expected of course. Error I'm seeing: "LZMA ERROR 1 - must RESET 
> board to recover"
> - local master branch image (with your last patch) with default 
> .config: boots fine, even after multiple reboots.
> - local master branch image (with your last patch) with my own 
> config: boots fine the first time. After that, it just barks and says 
> 'Bad Header checksum'.
> 
> It looks like there's something with my .config that breaks it... The 
> (kernel?) image is pretty big (9109444 bytes?) from what I can tell, 
> maybe that's still an issue here.
> 
As a follow-up: wiping my ccache worked wonders it seems. All good now.

Cheers

Stijn


> This is what default config prints:
> 
> 3: System Boot system code via Flash.
> ## Booting image at bfc50000 ...
> addr:80500000
> We have SEAMA, Image Size = 2359232
> Verifying Checksum ...
> Uncompressing SEAMA linux.lzma ... OK
> 
> And my custom config (which boots fine the first time after flashing 
> somehow, then goes straight to recovery mode somehow):
> 
> 3: System Boot system code via Flash.
> ## Booting image at bfc50000 ...
> addr:80500000
> We have SEAMA, Image Size = 9109444
> Verifying Checksum ...
> Bad Header Checksum.
> 
> Entering HTTP server.
> 
> 
> Anyway, I'll send in my tested-by for your patch so hopefully it can 
> get merged! Thanks for the work and your help!
> 
> 
> Cheers
> 
> Stijn
> 
>> - 3 screws on the top, under the sticker
>> 
>> Disassemble:
>> - get off the pads (they won't stick back after a few days ;), use
>> very thin double sided sticker to help them)
>> - get the bottom screws
>> - peel off the rounded sticker from the top with thin but flexible
>> knife or razor blade, etc ...
>> - get the upper screws
>> - slide the front and rear half vertically a little
>> - separate them
>> 
>> The serial settings can be found on the wiki [1]:
>> - Pinout: TX, GND, 3v3, empty, RX
>> - Bits per second: 57600
>> - Data bits: 8
>> - Parity: None
>> - Stop bits: 1
>> - Flow control: None
>> 
>> I have a CP2102 USB to TTL module, and used with "minicom -D 
>> /dev/ttyUSB0".
>> 
>> 
>> Intereestingly, when I connected with serial to the router it was
>> sometime unstable:
>> * refuse to start
>> * freeze at boot soon after: "Error applying setting, reverse things
>> back" messge
>> 
>> Other than this, I have no problem with k5.4.
>> 
>> 
>> 
>> [0]: https://youtu.be/tf7nMqdUKD4
>> [1]: https://openwrt.org/toh/d-link/dir-860l#access_with_serial_cable
>> 
>> 
>> --
>> Regards,
>> Szabolcs
>> 
>> 
>>> 
>>>  >
>>>  > [0]
>>>  > 
>>> http://lists.infradead.org/pipermail/openwrt-devel/2020-April/022926.html
>>>  >
>>>  > Signed-off-by: Szabolcs Hubai <szab.hu at gmail.com>
>>>  > ---
>>>  >  target/linux/ramips/image/mt7621.mk | 4 +++-
>>>  >  1 file changed, 3 insertions(+), 1 deletion(-)
>>>  >
>>>  > diff --git a/target/linux/ramips/image/mt7621.mk
>>>  > b/target/linux/ramips/image/mt7621.mk
>>>  > index aa6836d50a..e954f730da 100644
>>>  > --- a/target/linux/ramips/image/mt7621.mk
>>>  > +++ b/target/linux/ramips/image/mt7621.mk
>>>  > @@ -218,7 +218,9 @@ define Device/dlink_dir-860l-b1
>>>  >    $(Device/seama)
>>>  >    BLOCKSIZE := 64k
>>>  >    SEAMA_SIGNATURE := wrgac13_dlink.2013gui_dir860lb
>>>  > -  KERNEL := kernel-bin | append-dtb | relocate-kernel | lzma |
>>>  > uImage lzma
>>>  > +  LOADER_TYPE := bin
>>>  > +  KERNEL := kernel-bin | append-dtb | lzma | loader-kernel | \
>>>  > +  relocate-kernel | lzma -a0 | uImage lzma
>>>  >    IMAGE_SIZE := 16064k
>>>  >    DEVICE_VENDOR := D-Link
>>>  >    DEVICE_MODEL := DIR-860L
>>>  > --
>>>  > 2.17.1
>>>  >
>>>  >
>>>  > _______________________________________________
>>>  > openwrt-devel mailing list
>>>  > openwrt-devel at lists.openwrt.org
>>>  > https://lists.openwrt.org/mailman/listinfo/openwrt-devel
>>> 
>>> 
>> 
>> _______________________________________________
>> openwrt-devel mailing list
>> openwrt-devel at lists.openwrt.org
>> https://lists.openwrt.org/mailman/listinfo/openwrt-devel
> 
> 
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel



More information about the openwrt-devel mailing list