Dynalink dl-wrx36 Detailed Install Guide (Using SSH 'option A')
Adapted from the Official Installation Wiki
Please read all the instructions at least twice before starting or asking questions here.
It seems intimidating but as you read and try it becomes clear.
Disclaimer/Note for installing future versions of OpenWRT >23.05:
The ipq807x target was renamed to qualcommax in main firmware snapshots, 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 ipq807x, but if you're using the current 'main snapshots' or future OpenWRT versions you may need to adjust filenames in the guides commands.
'ipq807x-generic' may become→ 'qualcommax-ipq807x'
Installation 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 “initramfs” (aka kernel) image, for initial access (mandatory)
- The factory image for flashing to OpenWrt (mandatory)
- The “sysupgrade” image for updating to latest version of OpenWrt (not required for initial OpenWRT install, used for future updates)
Optional: Due to this device being under development (as of 2024), users may want to install the daily built main snapshot images instead. Download them with the firmware selector. (In this case the filenames of commands found in this guide will need to be change).
Installation:
Note: Copy and paste the commands below to avoid unintentional typos which could result in needing a complicated serial recovery (I couldn't find a guide for serial installation, but maybe ask here).
Complete EITHER "Part 1, option A" or "Part 1 option B", to boot OpenWRT “initramfs” image. Option A (SSH method) is what is described here below. Option B (Serial) is not... See the main device page for option B, which requires hardware and has fewer instructions.
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 here and by searching tutorials. A Windows reference guide to SSH. Linux instructions coming below.
-
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 gateway 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 in step 1, confirm and wait for the reboot. -
Part 1, option A, step 4:
Then login using SSH in terminal/command line, with:
user: admin & password: askey1234.
A Windows reference guide to SSH
4.1 In terminal run the command:
(Always replace the IP mentioned
below with your default gateway IP,
seen in the OEM login browser address bar before)
ssh admin@192.168.216.1
(If you have trouble connecting, check that your PC firewall isn't blocking your SSH connecion attempts)
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:~#
That means it was successful
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. (Note some USB sticks may not work, resulting in the router always booting to the default/original/OEM firmware at the end of part 1, see this convo if you get that issue)
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 in 5.2.1 previously.
- Part 1, option A, step 6:
Reboot the device, to boot to initramfs, by running:
reboot
If it does not boot to intramfs, if it just boots to the dynalink firmware, check see if this may be your issue.
- 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).
Note the SSH login is now also changed to OpenWRT's root login since OpenWrt is flashed/installed. So the username will become: root instead of admin.
-
You need to set a temporary password for the router:
1.1ssh root@192.168.1.1
1.2passwd
and enter a temporary password (Note, typing Passwords is usually not visible in terminal)
1.3exit
-
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 the -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.
-
Connect to the router using SSH as before (Router connected with a LAN port)
-
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.
- Run a ubiformat to both rootfs partitions using the filename you noted in step 2 (Replace factory_image.ubi below):
ubiformat /dev/mtd18 -y -f /tmp/factory_image.ubi
ubiformat /dev/mtd20 -y -f /tmp/factory_image.ubi
- Set U-boot env variable, run:
fw_setenv mtdids 'nand0=nand0'
- 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)
- 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)'
This will allow users to recover the router using a USB drive containing the initramfs image file, should anything go wrong. Make sure that you set the filename below to match the actual .itb image you placed on the USB. e.g. snapshots images use qualcommax and this example uses the 23.05 name. If you plan to skip step 12 and keep USB boot option as a fail-safe, you just need to make sure you note down the intrafms image .itb filename set in the below command 3 or you can rename it to something generic like recovery.itb and change the command below accordingly.
The commands below, provided by hnyman, will set the relevant U-Boot variables:
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'
3 (replace the filename below with the one found on the USB drive):
fw_setenv openwrtusb 'usb start && fatload usb 0:1 0x44000000 openwrt-23.05.3-ipq807x-generic-dynalink_dl-wrx36-initramfs-uImage.itb && bootm 0x44000000'
(EDIT: Wrong 'mailto' code string section removed by hnyman on 2 march 2024)
More details about this fail-safe method; comment #1317
- Unplug the USB from the router and reboot it by running:
reboot
Your device should reboot into OpenWrt.
Check by successfully visiting: http://192.168.1.1/cgi-bin/luci
- If you try SSH into the device again you will get an error:
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
On your computer 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, as in part 2 step 1.
- If your device now successfully boots into OpenWrt Well Done! you're on your way! But you can now optionally set the boot command to no longer use the USB as a fail-safe. This will mean slightly faster router boot time. To do so, 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'
Finally, router updates: OpenWrt updates may now be flashed with LuCI (the GUI router login backend) at this directory, using the option: ‘Flash new firmware image’, to upload and flash/install the ‘sysupgrade’ file which we download here.
You need to keep an eye out for these updates in future, to keep your router up-to-date and secure. Here's the wiki guide for Firmware upgrades. Note you should also update your OpenWRT packages from time to time.
To access LuCi open http://192.168.1.1/ in a browser while connected to your router with LAN.
Well done Installation is complete!
Edit: You may have issues with the 5Ghz radio detection.
See a config solution here