Dynalink DL-WRX36 Install

Thanks, this solved it

Hi, after 13h12m of OpenWRT router prep, setup and annotating the installation docs I finally have completed the install.
Thanks for everyones help.

I have uploaded my edited for clarity install instructions here so that future novices can better understand installation and save some time :slight_smile:
I hope the device page can be updated with these instructions @frollic ?

Edit* the instructions are now also posted a little further down with further clarity.

sorry, not going to DL some random DOC off mega.

whatever gaps you found, post them here.

Dynalink dl-wrx36 Install Guide

Adapted from the Official Installation Wiki

Please read all the instructions at least twice before starting or asking questions here.

Note for future:
The ipq807x target was renamed to qualcommax in main, to support other Qualcomm AX chips, and ipq807x was bumped down to subtarget qualcommax/ipq807x. However in stable OpenWRT 23.05, it is still ipq807x/generic.
The guide below has filenames for 23.05, but for 'main snapshots' and future OpenWRT versions you need to adjust filenames in the commands.
ipq807x-generic → qualcommax-ipq807x

Files Needed: It is recommended to download all stable firmware images/files found here before installation. Just search there for: Dynalink DL-WRX36

To reiterate, download:

  • The above “initramfs” (aka kernel) image, for initial access (mandatory)
  • The above “sysupgrade” image for updating to latest version of OpenWrt (not required for OpenWRT install)
  • and factory image for flashing to OpenWrt (mandatory)

Optional: Due to this device being under development, users may want to install the daily built main snapshot images instead. Download them with the firmware selector.

Installation:

Note: Copy and paste the commands below to avoid unintentional typos which could result in needing a complicated serial recovery (is there any 'serial recovery' guide to link to?).

Complete either Part 1 A or B, to boot “initramfs”. Afterwards complete Part 2 to install the “factory” OpenWrt image.

Part 1, option A

  • We'll use SSH on the OEM firmware to copy and boot "initramfs"

  • SSH is a method of delivering commands to the router from a computer. Depending on your OS there are different methods to use SSH, and you'll have to familiarise yourself with these.

  • Part 1, option A, step 1:
    The router first needs to be set up to receive SSH commands. This can be done manually as described here, or more easily by using a ready made backup config file for enabling SSH, here. Download it and move on to the next step.

  • Part 1, option A, step 2:
    Login to the router: Plug your Dynalink router into your PC using a LAN port and in a web browser, access it's default gateway, also known as, firmware back-end or OEM login (see instructions on the bottom of the router eg: https://login.dynalink or see the manual or find the routers login IP address in your OS network settings).

  • Part 1, option A, step 3:
    Once logged in, navigate to the router menu: System Settings/Configuration & Reset/Select file
    Select the 'premade backup config file' we downloaded ins step 1, confirm and wait for the reboot.

  • Part 1, option A, step 4:
    Then login using SSH with user: admin & password: askey1234.
    A Windows reference guide to SSH

Linux guide:

4.1 In terminal run the command:
ssh admin@192.168.216.1
(Always replace the IP mentioned
here with your default gateway IP,
seen in the OEM login browser address bar before)

4.2 If you have ever connected to another router, host key verification
failed may display: “Warning remotehost identification has changed!”
If this happens, run the command:
ssh-keygen -f "~/.ssh/known_hosts" -R "192.168.216.1"
or navigate to ~/.ssh/ in your file browser and manually edit the known hosts file removing the conflicting entry.

4.3 You may also encounter the following error when connecting:

Unable to negotiate with 192.168.216.1 port 22: no matching host key type found. Their offer: ssh-rsa

This error is due to a change in the Openssh from version 8.8. To fix it, in your file browser open the [~/.ssh/config] file with a text editor and add the following lines (if the file doesn’t exist, create it):

host 192.168.216.1
HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa

4.4 Retry the SSH login command eg:

ssh admin@192.168.216.1

result should be:

The authenticity of host '192.168.216.1 (192.168.216.1)' can't be established.
RSA key fingerprint is SHA256:th3NqsG4AlEasUiQu5S19L3X6pWU0cl11Svv9ZOeUEM.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

4.5 Type and enter: "yes"

result should be:

Warning: Permanently added '192.168.216.1' (RSA) to the list of known hosts.
admin@192.168.216.1's password:

4.6 Input password:
askey1234

Result, you should then see something like this:

BusyBox v1.32.1 (2021-07-29 01:55:39 CST) built-in shell (ash)

A text Logo and
---------------------------------------------------------------
For those about to rock... (Chaos Calmer, 9b2ff7f+r49254)
---------------------------------------------------------------
admin@DL-WRX36:~#

4.7 That means it was successful
Note the SSH login will change to OpenWRT's root login once OpenWrt is flashed/installed in Part 2 . So user will become root instead of admin.

Now that you have SSH access:

  • Part 1, option A, step 5:

5.1 Copy the initramfs image to a FAT32-formatted flash drive and connect it to routers USB port.

5.2 Change boot command, so it loads the initramfs image on next boot (fallback to OEM firmware is provided):

If you are installing 23.05.2 stable, run:

5.2.1
(Use the filename of your intramfs image in this command and all other commands if it's different)
fw_setenv bootcmd 'usb start && fatload usb 0:1 0x44000000 openwrt-23.05.2-ipq807x-generic-dynalink_dl-wrx36-initramfs-uImage.itb && bootm 0x44000000; bootipq'

5.2.2 If you get an error:
Warning: Bad CRC, using default environment
Run the same command again, then to confirm the new boot parameter is present run:
fw_printenv
That should output the same bootcmd text as we just set above in 5.2.1.

5.3 If you are installing main snapshot, run eg:

fw_setenv bootcmd 'usb start && fatload usb 0:1 0x44000000 openwrt-qualcommax-ipq807x-dynalink_dl-wrx36-initramfs-uImage.itb && bootm 0x44000000; bootipq'

  • Part 1, option A, step 6:
    Reboot the device to boot the initramfs, run:

reboot

  • Continue to Part 2 of the installation guide.

Part 2 - Copy and boot the OpenWrt factory image:

  • The default LAN IP of the booted initramfs is 192.168.1.1.

  • If you're unable to connect to 192.168.1.1 in a web browser or with SSH, the initramfs boot has failed, and the router's still running the Dynalink firmware (check that you did Part 1 steps correctly).

  1. You need to set a password for the router:
    1.1 ssh root@192.168.1.1
    1.2 passwd and enter a temporary password
    1.3 exit

  2. SCP the OpenWrt factory image to the router, store it in /tmp.
    Note the images exact filename, as you will need to use it in step 5’s command in place of "factory_image.ubi".
    (Learn SCP for terminal here, here and with this video)

  • The Windows app 'WinSCP' & linux terminal’s SCP now defaults to the SFTP protocol, make sure to tell your application to use the scp protocol. To do this in terminal use th -O option.

2.1 Open terminal at the path where your Factory Image file is downloaded
2.2 Sample of what the command should look like (replace the filename with your factory filename):
scp -O openwrt-23.05.2-ipq807x-generic-dynalink_dl-wrx36-squashfs-factory.ubi root@192.168.1.1:/tmp
2.3 you should see a 100% dialogue after running the above command.

  1. Connect to the router using SSH as before (Router connected with a LAN port)

  2. Check MTD partition table,run:

cat /proc/mtd

result: rootfs and rootfs_1 should be mtd18 and mtd20 depending on current OEM slot. If it is your previous command in 2.2 was successful.

  1. Run a ubiformat to both rootfs partitions using the filename you noted in step 2 (the factory image filename):

ubiformat /dev/mtd18 -y -f /tmp/factory_image.ubi

ubiformat /dev/mtd20 -y -f /tmp/factory_image.ubi

  1. Set U-boot env variable, run:

fw_setenv mtdids 'nand0=nand0'

  1. Find the offset of mtd18, to determine current OEM slot, run:

cat /sys/class/mtd/mtd18/offset

If current OEM slot is 1, offset should be 16777216 (0x1000000)

If current OEM slot is 2, offset should be 127926272 (0x7a00000)

(note your terminal may only show the first set of unbracketed numbers, that’s okay)

  1. Set U-boot env variable. If current OEM slot is 1 (determined in step 7), run:

fw_setenv mtdparts 'mtdparts=nand0:0x6100000@0x1000000(fs),0x6100000@0x7a00000(fs_1)'

If current OEM slot is 2, run:

fw_setenv mtdparts 'mtdparts=nand0:0x6100000@0x7a00000(fs),0x6100000@0x1000000(fs_1)'

  1. Set U-boot env variable, run:

fw_setenv bootcmd 'setenv bootargs console=ttyMSM0,115200n8 ubi.mtd=rootfs rootfstype=squashfs rootwait; ubi part fs; ubi read 0x44000000 kernel; bootm 0x44000000#config@rt5010w-d350-rev0'

  1. Reboot the device, run:

reboot

Your device will reboot into OpenWrt.

  • If you try SSH into the device again you will get an error:
    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

Navigate
to ~/.ssh/ and manually edit the ‘known hosts’ file removing the
conflicting entry for '192.168.1.1’
You will then be able to re-run and reset SSH and make a new permanent strong password for the routers login.

Finally OpenWrt updates may now be flashed with LuCI over here, using the ‘Flash new firmware image’ option to upload and flash the ‘sysupgrade’ file we downloaded at the start.
You need to keep an eye out of these updates in future to keep your router up-to-date and secure.
To access LuCi open http://192.168.1.1/ in a browser while connected to your router with LAN.
Well done Installation is complete, but there’s one more useful option:

USB recovery

The final boot command above can be modified to always try booting from USB first. This is optional and can be set after installation, but will allow users to recover the router using a USB drive containing the initramfs file. Make sure that you set the filename below to match the actual image you placed on the USB (e.g. snapshots use qualcommax), as this example uses the 23.05 name. The code below, provided by hnyman, will set the relevant U-Boot variables:

bootcmd=run openwrtusb; run openwrtboot openwrtboot=setenv bootargs console=ttyMSM0,115200n8 ubi.mtd=rootfs rootfstype=squashfs rootwait; ubi part fs; ubi read 0x44000000 kernel; bootm 0x44000000#config@rt5010w-d350-rev0 openwrtusb=usb start && fatload usb 0:1 0x44000000 openwrt-ipq807x-generic-dynalink_dl-wrx36-initramfs-uImage.itb && bootm 0x44000000

This can be applied in OpenWrt using each of these 3 commands :
1.
fw_setenv bootcmd 'run openwrtusb; run openwrtboot'
2.
fw_setenv openwrtboot 'setenv bootargs console=ttyMSM0,115200n8 ubi.mtd=rootfs rootfstype=squashfs rootwait; ubi part fs; ubi read 0x44000000 kernel; bootm [0x44000000#config@rt5010w-d350-rev0](mailto:0x44000000#config@rt5010w-d350-rev0)'
3.
fw_setenv openwrtusb 'usb start && fatload usb 0:1 0x44000000 openwrt-ipq807x-generic-dynalink_dl-wrx36-initramfs-uImage.itb && bootm 0x44000000'

More details about this failsafe method is in post comment #1317.

3 Likes

TLDR, but I can't see anything where the wiki entry's incorrect.

Someone here once told me it's polite to add to the installation docs.

I spent a lot of time making the language, numbering and grammar clearer added many hyperlinks and added instructions for SSH and SCP.
It's also accurate and could simply be copy pasted into the device page. (note Part1 option B isn't included here though)

Please consider using the contribution

2 Likes

Now there's a link to your how to in the wiki.

1 Like

one thing,

instead of deep linking to a specific version of openwrt, point people to https://firmware-selector.openwrt.org/, it'll always default to the latest release.

just need to write the name of the device into the model field

(kernel == initramfs)

the arch naming switch might also be worth mentioning - Dynalink DL-WRX36 Askey RT5010W IPQ8072A technical discussion - #2792 by slh

Okay adjusted for these suggestions, thanks

1 Like

(not required for OpenWRT install)

1 Like

Hello

I have successfully done most of the steps, until the USB recovery one. After I ran those 3 commands and rebooted, now the router won't boot anymore no matter USB is plugged in or not. I have a feeling that it's bricked now. Can you help me with this?

Thank you

You'll need serial port access and do a recovery.

1 Like

A couple of questions about your install process.
Did you flash with the stable version, or did you use a snapshot?
Also, did you copy and paste the commands directly from the instructions, or did you type / edit?

Thanks for your reply. Luckily I have one FTDI adapter in place. Let me try this way

I flashed with the stable version. I just copied and pasted directly from the instruction. I don't really understand why. I had event checked with this command

fw_printenv

and it showed

fw_setenv bootcmd 'usb start && fatload usb 0:1 0x44000000 openwrt-23.05.2-ipq807x-generic-dynalink_dl-wrx36-initramfs-uImage.itb && bootm 0x44000000; bootipq'

console should show why it fails to boot.

It might well be a too fancy / large / something usb stick, which does not map into "usb 0:1". There has been rearlier evidence about that.

As simple as possible small old stick should be the best.

(And if you have already installed OpenWrt, then the bootipq does not work any more.)

2 Likes

I was successful booting up with UART using Putty. Sorry I did it so fast so I forgot to save the log. But seems like it somehow failed to read the image from the USB stick even though it was the stick that I used in the first place. I reformatted it and copy the image again and then it read and flashed. There was some issues with the USB sticks too. I have two 2.0 USB sticks formatted exactly the same and one worked and one didn't. Maybe when I have time I will try to replicate the error and show it to you guys here later. But thank you all for your support

2 Likes

I think something ate your formatting at the first list of the uboot commands?

At least, I can't parse this to tell when one of the new commands starts - you can only tell by the fact that there isn't a semicolon, instead of there being a normal delineation.

Also, personal preference, but I prefer the use of "```" to denote a line-wide code snippet if you're pasting an entire command on a new line. This makes the gray box larger and more visible. The single-tick version is usually used for in-line snippets.

I for one much appreciate the clearer guide, by the way.
Oh, and if anyone's still having issues with the SCP command (I still think we should have a reference...), you can also read the image straight off the USB stick since the OEM OS automounts it. It's /mnt/volumename/fwimage or something like that.

1 Like

Glad you got use out of the guide.
I don't quite follow your feedback though, could you maybe send me a reformat of the parts you'd change, then maybe I can edit my guide.