thereisnourflevel 25

Gelişen
Katılım
31 Ağustos 2026
Mesajlar
27
Beğeniler
33
Bu cihaza OpenWrt portlamak için uzun zamandır UART tarafında incelemeler yapıyordum. Ancak uboot ve kernel tarafında uart konsolu fiilen kapalıydı; tek UART çıktısı cihaz açıldığı andaki BootROM satırlarıydı (Boot SPI NAND / Jump / non secure uboot). Ondan sonra uart tamamen susuyordu, uboot ve kernel çıktısı yoktu. Sorun kablo veya pinler değil, stok uboot’un seri tablosuydu.

PC’de TFTPD64 Konfigürasyonunda: Current Directory’de mtdflash ve mtd1_Bootloader_1MiB_uartfix.bin içeren klasör seçilecek.
Kod:
cd /tmp
tftp -g -r mtdflash -l mtdflash 192.168.1.2
tftp -g -r mtd1_Bootloader_1MiB_uartfix.bin -l uartfix.bin 192.168.1.2
chmod +x /tmp/mtdflash
./mtdflash info /dev/mtd1
./mtdflash write /dev/mtd1 /tmp/uartfix.bin

Bootloader Şifresi: "Boot4128s!"

Bu patch tamamen deneyseldir. Yamayı ana router olarak kullananların, aktif kiralama süreci devam edenlerin ve temel düzeydeki kullanıcıların denemesi tavsiye edilmez. Uygulamadan doğabilecek tüm riskler ve sorumluluk tamamen yöntemi uygulayan kişiye aittir.


Model: ZXHN H3601P V9.0
Yazılım: V9.0.0P3_TN2
Donanım: V9.0.7
U-Boot vid: 38-H3601PV90 (product_vid=38)
SoC: ZTE/Sanechips ZX279128S
CPU: 2x Cortex-A9 @ 1GHz (U-Boot log: ZX279128S@A9,1000MHZ)
ABI: armv7l, soft-float (VFP/NEON yok)
RAM: 256MiB DDR, taban 0x40000000
Flash: Winbond W25N02KVZEIR SPI-NAND, 256MiB, 3.3V
LAN: SoC GEPHY, dtb'de 4 port var, kartta RJ45 çıkıyor
Wifi: MediaTek MT7916, wifi6 dbdc
UART0: 0x94404000 -> ttyAMA0, 115200 8N1
UART1: 0x94405000, dtb'de okay yazıyor ama stok firmware'de /dev altında node yok
U-Boot: 2013.04 (23 Nis 2024), board=zx279128sevb
Kernel: Linux 4.1.25 SMP, uimage @0x40008000, ~3.0MB
Rootfs: JFFS2, busybox 1.17.2, uclibc 0.9.33

Bu SoC üzerinde OpenWrt'i boot etmeyi başardıktan sonra Ethernet ve PCIe sürücülerini halledebilirsem, sorunsuz çalışan bir port ortaya çıkabilir. ZXIC gibi kaynak/dokümantasyon bulunmayan bir HiSilicon SoC barındıran HG255S için de çoğu şeyi reverse engineering yaparak sıfırdan sürücü yazmış ve sorunsuz çalışan bir port ortaya çıkarmıştım. (Huawei HG255s OpenWrt) Port sürecinde H3601P için de benzer bir yol izlenecek; zira bu SoC OpenWrt tarafından desteklenmiyor.

1788562075815.webp1788562186848.webppinouts-h3601p.webp
 

Dosya Ekleri

Son düzenleme:
Hello, I also have an H3621P with the same UART behavior. If you'd like, I can share the dump I got from the SPI NAND for you to examine. However, I haven't been able to get the TFTP connection to work. Can you help me?

Merhaba, bende de aynı UART davranışına sahip bir H3621P var. İsterseniz incelemeniz için SPI NAND'den aldığım dökümü (dump) paylaşabilirim. Ancak TFTP bağlantısını bir türlü çalıştıramadım. Yardımcı olabilir misiniz?
 
Hello, I also have an H3621P with the same UART behavior. If you'd like, I can share the dump I got from the SPI NAND for you to examine. However, I haven't been able to get the TFTP connection to work. Can you help me?

Merhaba, bende de aynı UART davranışına sahip bir H3621P var. İsterseniz incelemeniz için SPI NAND'den aldığım dökümü (dump) paylaşabilirim. Ancak TFTP bağlantısını bir türlü çalıştıramadım. Yardımcı olabilir misiniz?

if you upload that spi dump, i will inspect the bootloader partition for patching. It might take me a few days to look at the dump, bc im busy these days.

Eğer tam dump'ı paylaşırsan, bootloader partisyonunu yamalamak için inceleyebilirim. Ancak birkaç gün sürer, zira şu sıralar meşgulüm.
 
Son düzenleme:
Yes here is the file

I GoT admin password D6KbCZcAY7SP which works and has ability to change Work Mode

Can you describe how you GoT TFTP to work with this hardware H3601P?

Mine is H3621P but should be Very similar. Thanks!

Hello, can you also upload original mtd1 to compare ? I cannot understand what changed.

Also did you have shell access ? How did you get the device to work with tftp ? Is there a combination with the button or anything?
 
Son düzenleme:
H3601P OpenWrt portundan haber var: NAND açılışı, NPU ve Wi-Fi tamam.

İlk mesajda UART konsolunu açmış, bu cihazda OpenWrt çalıştırmak için uğraştığımı yazmıştım. Son durumu da aynı konuya bırakayım: H3601P artık kendi NAND belleğinden OpenWrt açıyor. LuCI, kablolu ağ, iki Wi-Fi bandı ve NPU hızlandırması çalışıyor.

Kendi cihazımda kullandığım LAN/WAN, kablosuz bağlantı ve NAT tarafında stok yazılımdaki gibi sorunsuz çalışıyor. Cihazı kapatıp açınca doğrudan OpenWrt geliyor; her seferinde UART'tan imaj yüklemek gerekmiyor. Ayarlar ve kurulan paketler de kalıcı.

Hız tarafında geldiğim nokta:
  • Kablolu: Gigabit bağlantı sorunsuz. Kendi testlerimde 1 Gbit hattın beklenen aktarım seviyesine ulaşabiliyorum.
  • 5 GHz / 160 MHz: Uygun istemciyle, NPU hızlandırması devredeyken gigabit seviyesinde veri aktarımı yapabiliyorum.
  • 5 GHz / 80 MHz: Testlerimde 700–800 Mbit/s bandını görüyorum.
  • 2.4 GHz ve 5 GHz: İki radyo birlikte çalışıyor. İstemci bağlandığında uygun akışların hızlandırmaya alınması otomatik.

Bunlar veri aktarımında gördüğüm sonuçlar. Aşağıdaki LuCI ekranındaki “RX Rate / TX Rate” ise istemcinin o andaki kablosuz bağlantı hızı; hız testi sonucu değil. Ekran görüntülerini 80 MHz kullanırken aldım, 160 MHz testini ayrı yaptım.

Buraya nasıl geldik?

Bu SoC için elimde hazır bir OpenWrt portu veya register'ları baştan sona açıklayan bir üretici kılavuzu yoktu. Cihazdan aldığım tam NAND dump'ı, bootloader, stok kernel ve sürücü modülleri üzerinden ilerledim. İlgili fonksiyonları disassemble/decompile ederek hangi register'a ne yazıldığını, DMA ring'lerinin nasıl kurulduğunu ve paketlerin hangi yoldan geçtiğini çıkardım. Sonra bunları güncel Linux/OpenWrt tarafına uyarlayıp cihaz üzerinde denedim.

Donanım da kısaca şöyle: Sanechips/ZTE ZX279128S, 1 GHz çift çekirdek Cortex-A9, 256 MiB RAM, 256 MiB Winbond SPI-NAND ve MediaTek MT7916 Wi-Fi 6. Üç Gigabit Ethernet portu var: iki LAN, bir WAN. İşlemci tarafında soft-float kullanılıyor.

İki çekirdek ve PCIe: İkinci çekirdeğin açılışını IRAM'deki küçük başlangıç kodu ve SCU üzerinden hazırladım. Sonrasında iki çekirdek açıkken Wi-Fi bağlantısında oluşan kilitlenmelerle uğraştım. Stok kernel'de PCIe register okumalarıyla PL310 cache bakım işlemlerinin aynı kilit altında yapıldığını görünce eksik kalan taraf ortaya çıktı. Cache-sync ve hizasız erişimlerin sınır işlemlerini de kapsayacak şekilde bu davranışı uyarladım. Şu an iki çekirdek de açık; cihaz tek çekirdeğe düşürülmüş bir şekilde çalışmıyor.

Ethernet ve NPU: TM, buffer manager, DMA, MDIO ve PHY tarafı için cihazın donanımına uygun sürücü kodu yazıldı. IPv4 NAT akışlarını izleyip uygun bağlantıları SoC'nin classifier ve packet modifier tablolarına yerleştiren bölüm de bu çalışmanın parçası. Hızlandırmaya uygun olmayan paketler normal Linux ağ yolundan devam ediyor.

Wi-Fi: Burada OpenWrt'nin mt76 sürücüsünü temel aldım. Sıfırdan bütün bir Wi-Fi sürücüsü yazdığımı söylemiyorum. MT7916'nın iki PCIe arayüzü, firmware yükleme sırası, kesmeler ve NAPI tarafı bu platforma uyarlandı. SoC'nin IDM DMA birimiyle kablosuz gönderim yolu arasında da bağlantı kuruldu. Kuyruk sırası, paket belleğinin kime ait olduğu, TX tamamlanmaları ve istasyon ayrıldığında eski akışların temizlenmesi özellikle uğraştırdı. Sonuçta kablosuz tarafta da NPU'dan yararlanan yol çalışır hâle geldi.

NAND ve açılış: Stok CSPBOOT'un beklediği başlıkları, CRC'leri ve banka seçimini çözerek OpenWrt imajını kabul ettiği biçimde paketledim. İlk başta NAND'dan initramfs açtırdım; ardından kalıcı depolamayı ve normal imajı hazırladım. Sistem artık Bank B'deki kernel ve UBI içindeki SquashFS kök dosya sistemiyle açılıyor.

Depolama için eski Bank A'nın 80 MiB alanını, sondaki 87 MiB alanla birleştirdim. Böylece 167 MiB'lık kalıcı yazılabilir alan oluştu. Bu bölüm JFFS2 kullanıyor. İlk denemede OOB cleanmarker yüzünden ECC hatası çıkınca, marker'ı tam bir NAND veri sayfasına yazan in-band düzenini ekledim. Yeniden bağlama ve yeniden başlatma sonrasında dosyaların kaldığını da kontrol ettim. Bank A artık depolama alanı; eski stok yedek firmware bankası olarak durmuyor.

Son olarak LuCI içeren normal SquashFS imajını ve cihaza özel sysupgrade yolunu hazırladım. sysupgrade -n ile initramfs ortamından normal sisteme temiz kurulumu cihaz üzerinde yaptım. Kurulum kernel'i ve kök dosya sistemini yazıp geri okuyarak karşılaştırıyor; bootloader'ın göreceği başlığı en son yazıyor.

Ne kadar kod çıktı?

Güncel platformun C, header ve assembly kısmı 22 dosyada 12.420 fiziksel satır. Bunun içinde Ethernet/TM 4.128, NPU/L3 3.016, IDM donanım sürücüsü 1.450 ve WLAN fast-path 1.345 satır. Bunlara ek olarak mt76 tarafında 30 yama dosyası var: toplam 5.047 satır patch metni, seri boyunca 2.187 eklenen ve 374 çıkarılan satır.

Satır sayıları yorum ve boş satırları da içeriyor. Patch dosyasındaki bağlam satırlarıyla Linux/OpenWrt'nin mevcut kodunu “benim yazdığım kod” diye toplamadım. Sonraki yamalar önceki denemeleri değiştirebildiği için patch toplamı da tek seferde eklenmiş benzersiz kod sayısı değil. Derleme, depolama, kurulum ve yardımcı dosyaları da aşağıda dosya dosya bıraktım.

Bu liste güncel uygulama ve destek dosyalarının sayımıdır. Eski sürücü kopyaları, önceki depolama denemeleri ve üretilmiş yapılandırmalar da ayrı başlıklarla görünür. Bunların tamamını toplayıp benzersiz yeni kod miktarı olarak kullanmıyorum. Normal sürümde SFC için out/r241-normal altındaki 555 satırlık dosya kullanılıyor; eski 540 ve 547 satırlık kopyalar aynı sürücüye tekrar eklenmemeli.

Platform sürücüleri, hedef tanımları ve kernel yamaları
openwrt/target/linux/zte/
Kod:
Makefile — 33 satır
config-6.18 — 523 satır

openwrt/target/linux/zte/base-files/etc/apk/
Kod:
repositories — 5 satır

openwrt/target/linux/zte/base-files/etc/apk/repositories.d/
Kod:
distfeeds.list — 5 satır

openwrt/target/linux/zte/base-files/etc/board.d/
Kod:
02_network — 18 satır

openwrt/target/linux/zte/base-files/etc/config/
Kod:
network — 32 satır
wireless — 37 satır

openwrt/target/linux/zte/base-files/etc/hotplug.d/net/
Kod:
00-rps — 6 satır

openwrt/target/linux/zte/base-files/etc/
Kod:
rc.local — 27 satır

openwrt/target/linux/zte/base-files/etc/sysctl.d/
Kod:
90-h3601p-console.conf — 3 satır
99-network.conf — 20 satır

openwrt/target/linux/zte/base-files/etc/uci-defaults/
Kod:
99_network_tuning — 96 satır

openwrt/target/linux/zte/base-files/lib/preinit/
Kod:
68_h3601p_caldata — 33 satır

openwrt/target/linux/zte/base-files/lib/upgrade/
Kod:
platform.sh — 11 satır

openwrt/target/linux/zte/base-files/usr/sbin/
Kod:
h3601p-wlan-tx-stage — 44 satır

openwrt/target/linux/zte/dts/
Kod:
zx279128s-h3601p.dts — 400 satır

openwrt/target/linux/zte/files-6.18/arch/arm/boot/dts/zte/
Kod:
Makefile — 2 satır
zx279128s-h3601p.dts — 298 satır

openwrt/target/linux/zte/files-6.18/arch/arm/include/asm/
Kod:
zx279128-pcie.h — 6 satır

openwrt/target/linux/zte/files-6.18/arch/arm/mach-zte/
Kod:
Kconfig — 14 satır
Makefile — 2 satır
headsmp.S — 38 satır
platsmp.c — 139 satır

openwrt/target/linux/zte/files-6.18/drivers/net/ethernet/zte/
Kod:
Kconfig — 19 satır
Makefile — 9 satır
zx279128s-bufpool.c — 235 satır
zx279128s-bufpool.h — 19 satır
zx279128s-idm-hw.c — 1.450 satır
zx279128s-idm-wlan.c — 222 satır
zx279128s-idm.c — 235 satır
zx279128s-idm.h — 64 satır
zx279128s-l3offload.c — 3.016 satır
zx279128s-l3offload.h — 121 satır
zx279128s-tm.c — 4.128 satır
zx279128s-tm.h — 112 satır
zx279128s-wlan-fast.c — 1.345 satır
zx279128s-wlan-fast.h — 28 satır
zx279128s-wlan-flow.c — 147 satır
zx279128s-wlan-flow.h — 31 satır

openwrt/target/linux/zte/files-6.18/drivers/net/mdio/
Kod:
mdio-zx279128s.c — 175 satır

openwrt/target/linux/zte/files-6.18/drivers/pci/controller/dwc/
Kod:
pcie-zx279128s.c — 303 satır

openwrt/target/linux/zte/files-6.18/drivers/spi/
Kod:
spi-zx279128s-sfc.c — 540 satır

openwrt/target/linux/zte/files-6.18/include/linux/
Kod:
zx-idm-wlan.h — 35 satır

openwrt/target/linux/zte/image/
Kod:
Makefile — 30 satır

openwrt/target/linux/zte/patches-6.18/
Kod:
100-arm-mach-zte.patch — 21 satır  (+3 / -0)
110-net-zte-zx279128s-tm.patch — 19 satır  (+2 / -0)
120-mdio-zx279128s.patch — 26 satır  (+8 / -0)
130-pcie-zx279128s.patch — 28 satır  (+10 / -0)
140-serial-pl011-zteuart.patch — 140 satır  (+85 / -0)
150-bridge-fdb-rcu.patch — 62 satır  (+37 / -0)
160-pcie-l2-stock-serialization.patch — 102 satır  (+65 / -0)
161-pcie-l2-stock-sync-boundaries.patch — 69 satır  (+28 / -4)
170-spi-zx279128s-sfc.patch — 29 satır  (+11 / -0)

openwrt/target/linux/zte/zx279128s/
Kod:
target.mk — 11 satır

mt76 yama serisi
openwrt/package/kernel/mt76/patches/
Kod:
140-mt76-h3601p-fw-irq-poll.patch — 731 satır  (+296 / -24)
150-h3601p-stock-pcie-l2-guard.patch — 86 satır  (+15 / -7)
160-h3601p-idm-station-lifetime.patch — 51 satır  (+34 / -0)
170-h3601p-normal-tx-worker.patch — 20 satır  (+10 / -0)
180-h3601p-direct-tx-stage1.patch — 337 satır  (+280 / -0)
181-h3601p-idm-direct-tx.patch — 159 satır  (+125 / -0)
182-h3601p-direct-aql-bypass.patch — 56 satır  (+13 / -5)
183-h3601p-direct-tx-credit.patch — 72 satır  (+20 / -7)
184-h3601p-ordered-direct-tx.patch — 206 satır  (+101 / -21)
185-h3601p-batched-direct-tx.patch — 394 satır  (+203 / -117)
186-h3601p-armed-work-state.patch — 132 satır  (+47 / -11)
187-h3601p-completion-wakeup.patch — 166 satır  (+55 / -5)
188-h3601p-adjustable-credit.patch — 134 satır  (+47 / -8)
189-h3601p-credit-default-256.patch — 20 satır  (+2 / -2)
190-h3601p-association-safe-station-resolution.patch — 11 satır  (+1 / -1)
191-h3601p-silence-diagnostics.patch — 409 satır  (+51 / -51)
192-h3601p-idm-napi-inline-tx.patch — 141 satır  (+73 / -8)
193-h3601p-idm-napi-txwi-batch.patch — 226 satır  (+125 / -3)
194-h3601p-stock-hw-txp-probe.patch — 115 satır  (+36 / -3)
195-h3601p-exact-stock-txp.patch — 102 satır  (+36 / -7)
196-h3601p-stock-multi-msdu-txp.patch — 307 satır  (+157 / -5)
197-h3601p-stock-dual-txp.patch — 190 satır  (+59 / -14)
198-h3601p-stock-txp-length-marker.patch — 48 satır  (+9 / -6)
199-h3601p-reject-host-txp.patch — 51 satır  (+27 / -4)
200-h3601p-bounded-worker-context.patch — 61 satır  (+17 / -11)
201-h3601p-uncached-payload-pool.patch — 84 satır  (+19 / -6)
202-h3601p-worker-doorbell-batch.patch — 94 satır  (+27 / -12)
203-h3601p-credit-qlen-txwi.patch — 149 satır  (+68 / -10)
204-h3601p-r237-lean-completion.patch — 288 satır  (+127 / -19)
205-h3601p-r238-napi-placement-lean-txsched.patch — 207 satır  (+107 / -7)

Çalışma zamanı yardımcıları ve varsayılan ayarlar
openwrt/files/etc/apk/repositories.d/
Kod:
customfeeds.list — 5 satır

openwrt/files/etc/board.d/
Kod:
02_network — 18 satır

openwrt/files/etc/config/
Kod:
firewall — 200 satır
network — 30 satır

openwrt/files/etc/hotplug.d/ieee80211/
Kod:
10-wifi-detect — 3 satır

openwrt/files/usr/sbin/
Kod:
h3601p-debug — 18 satır
h3601p-idm-status — 15 satır
h3601p-idm-wlan-probe — 29 satır
h3601p-measure — 41 satır
h3601p-nand — 360 satır
h3601p-wifi-up — 34 satır
h3601p-wlan-fast — 61 satır

Normal imaj ve sysupgrade uygulaması
out/r241-normal/
Kod:
80_mount_root — 28 satır
base.dts — 345 satır
build_rootfs.py — 99 satır
h3601p-flash.c — 29 satır
h3601p-normal-overlay.sh — 95 satır
h3601p-upgrade.sh — 136 satır
h3601p-write-fence.h — 16 satır
install-bridge.sh — 26 satır
jffs2reset — 20 satır
normal.dts — 350 satır
package_image.py — 70 satır
platform.sh — 18 satır
prepare_kernel.py — 94 satır
rebuild.sh — 24 satır
spi-zx279128s-sfc.c — 555 satır
test-fence.c — 3 satır
test_cspboot.py — 25 satır
test_host.py — 66 satır

out/r241-normal/layout-module/
Kod:
Makefile — 1 satır
h3601p-upgrade-layout.c — 52 satır

Concat / JFFS2 geliştirmesi, araçları ve testleri
out/r240-concat/
Kod:
69_h3601p_overlay — 20 satır
build_images.py — 71 satır
check_storage_headers.py — 58 satır
concat.dts — 345 satır
h3601p-concat-fence.h — 11 satır
h3601p-concat.sh — 90 satır
h3601p-inband.sh — 87 satır
h3601p-jffs2.sh — 87 satır
h3601p-ubi-check.c — 35 satır
h3601p-xattrs.c — 118 satır
inband-qemu-build_init.py — 57 satır
jffs2-inband-cleanmarkers.patch — 194 satır  (+44 / -16)
migrate-inband.sh — 68 satır
migrate-jffs2.sh — 68 satır
original.dts — 336 satır
package_inband.py — 105 satır
package_jffs2.py — 111 satır
package_verify.py — 109 satır
patch_inband.py — 78 satır
setup_build.py — 75 satır
spi-zx279128s-sfc.c — 547 satır
test_boot.py — 110 satır
test_helpers.py — 62 satır
test_inband_boot.py — 116 satır
test_inband_migration.py — 74 satır
test_jffs2_boot.py — 116 satır
test_migration.py — 74 satır

CSPBOOT paketleme ve doğrulama araçları
out/cspboot-analysis/
Kod:
prepare_nand_r240.py — 212 satır
verify_cspboot.py — 292 satır
verify_nand_bundle.py — 128 satır

Üretilmiş normal imaj paket yapılandırması — yeni kaynak kod toplamı değil
out/r241-normal/
Kod:
openwrt-normal-packages.config — 3.898 satır

Upstream tabanlı derleme dosyaları — tamamı bana ait yeni kod değil
openwrt/
Kod:
h3601p.config — 14 satır

openwrt/include/
Kod:
feeds.mk — 68 satır

openwrt/package/kernel/mt76/
Kod:
Makefile — 793 satır

openwrt/target/linux/generic/
Kod:
config-6.18 — 8.269 satır

Upstream tabanlı üç dosyanın sabit OpenWrt commit’ine göre gerçek farkı: feeds.mk +5/-10, mt76 Makefile +1/-0, generic config-6.18 +4/-2. Büyük dosyaların tüm uzunluğunu yeni kod saymadım.

Güncel ekran görüntüleri

1. Sistem durumu
Kernel 6.18.44, çift Cortex-A9 bilgisi ve 167 MiB depolama LuCI'de görünüyor. Bu görüntüyü aldığımda cihazın çalışma süresi 11 saati geçmişti.


01a-sistem-ve-depolama.webp


01b-portlar-ve-ag.webp


01c-dhcp-istemcileri.webp


01d-kablosuz-durumu.webp

​

2. LAN / WAN arayüzleri
OpenWrt üzerinden yönetilen ağ arayüzleri ve trafik sayaçları.


02-ag-arayuzleri-mac-gizli.webp

​

3. Kablosuz ağ
İki radyo, bağlı istemci ve 80 MHz bağlantının o andaki PHY hızları. MAC/BSSID değerlerini paylaşım için kapattım.


03-kablosuz-mac-gizli.webp

​

Register adreslerini, bootloader başlığını, NAND yerleşimini ve hangi sürücünün ne yaptığını daha ayrıntılı okumak isteyenler için proje adresi:
github.com/wmemcmp/h3601p

Bu, H3601P için hazırladığım bağımsız bir port; resmî OpenWrt cihaz imajı değil. Şu anki sonuç kendi cihazımdaki testlerime dayanıyor. Başka bir donanım revizyonunda deneyecek olanların özellikle NAND yedeğini ve kurtarma yolunu hazırlaması gerekir.
 
Hello great news regarding the OpenWrt port on this platform, much respect!

Regarding my device H3621P which is same platform (CPU) but slightly different Memory and spi. Is it possible to have a look? I tried to patch the Bootloader and bricked it but managed to recover it again. I managed to get Full Shell Access now on telnet and can run the mtdwrite Utility you compiled. Is there a possibility to also compile nanddump? I have a router F8648P I would like to dump its NAND without opening because it's ISPs CPE.

I cannot DM you through this forum I do not know how to contact you if you please send me an email to [email protected] that would be great to contact you

Many thanks 🙏