Merhaba arkadaşlar, ben Oğuz.
Elimde Turkcell Superonline'ın verdiği ZTE ZXHN H267A V1.0 modem var. Bir süredir bu modeme OpenWrt kurabilir miyim diye uğraşıyorum. İnternette bu modele özel pek fazla kaynak bulamayınca kendim kurcalamaya başladım. Epey ilerledim ama birkaç konuda yardıma ihtiyacım var. Yaptıklarımı da burada paylaşmak istedim.
İlk olarak SSH erişimini açtım
Aslında modemin web arayüzünde Root hesabıyla giriş yapabiliyordum. Yani başlangıçta zaten gelişmiş yönetim paneline erişimim vardı.
Buradan config.bin dosyasını indirdim. GitHub'daki zte-config-utility aracını kullanarak yapılandırmayı açıp inceledim.
SSH ile ilgili SSH_ProcType ayarını 1 yerine 0 yapıp dosyayı tekrar modeme yükledim.
Böylece SSH üzerinden normal Linux kabuğuna ulaşabildim. Tam root yetkim yok ama sistem dosyalarını okuyabiliyorum.
Modemin donanımını ve flash yapısını inceledim
SSH'ye girdikten sonra /proc/cpuinfo, /proc/mtd gibi dosyalardan cihazı araştırmaya başladım.
Bulduğum bilgiler:
Flash tarafında iki kernel ve iki rootfs bölümü olduğunu gördüm.
Windows'ta Tftpd64 kurup SSH üzerinden TFTP kullanarak bu bölümlerin yedeklerini bilgisayara aldım. Bootloader'ı da birkaç kez yedekleyip hash değerlerini karşılaştırdım.
Firmware ve kernel dosyalarını da açmayı başardım
İlginç olan şu: kernel1 ve kernel2 dosyaları 4 MB olmasına rağmen aralarında sadece 6 bayt fark çıktı. Farkların hepsi ilk 256 baytlık başlıkta.
Ayrıca cihazın hangi firmware bankasından açıldığını da öğrendim.
Yani şu an birinci bankadan açılıyor, ikinci banka da geçerli görünüyor.
Kernel dosyalarının başında ZTE'ye özel bir başlık var. İlk 256 baytı çıkardıktan sonra devamının LZMA ile sıkıştırıldığını fark ettim.
7-Zip ile açınca yaklaşık 4,57 MB'lık gerçek Linux kernel imajını elde ettim. İçinden de Ralink MT751020 SOC ve Linux 2.6.36 derleme bilgilerini buldum.
Rootfs tarafında da biraz uğraştım. rootfs1 ve rootfs2 dosyalarını doğrudan açamadım ama çalışan sistemin /dev/mtdblock8 üzerinden SquashFS kullandığını tespit ettim.
ram_flash bölümünü yedekleyip 7-Zip ile açınca 1.366 dosyayı ve 50 klasörü çıkarmayı başardım. İçindeki programları, başlangıç scriptlerini ve kernel modüllerini de inceleyebiliyorum.
Sürücü tarafında neler var?
Firmware içerisinde şu modülleri buldum:
Wi-Fi ve Ethernet modüllerinin çalışan sistemde yüklü olduğunu da /proc/modules üzerinden kontrol ettim.
Tabii bunlar Linux 2.6.36 için derlenmiş sürücüler. Güncel OpenWrt'de doğrudan çalışmayacaklarının farkındayım.
Şu an nerede takıldım?
Asıl hedefim modeme OpenWrt kurmak. Araştırırken OpenWrt'nin EcoNet tarafındaki çalışmalarına ve eski Linux kaynaklarına ulaştım:
OpenWrt EcoNet
EN751221 Linux 2.6 kaynakları
Fakat bunların MT751020 üzerinde doğrudan çalıştığını doğrulayamadım.
Bir de bootloader tarafını henüz tam çözemedim. Firmware'de ttyS0 115200 seri konsol yapılandırması var. Bu yüzden CP2102 USB–TTL adaptör alacağım. Geldiğinde anakart üzerindeki UART pinlerini bulup bootloader açılış kayıtlarını incelemek istiyorum.
İmkân varsa kernel'i doğrudan RAM üzerinden test etmek istiyorum. Böylece flash'a yazmadan önce açılıp açılmadığını görebilirim.
Şunu da belirteyim: Şu ana kadar modeme OpenWrt veya başka bir kernel flashlamadım. Orijinal firmware hâlâ çalışıyor.
Sizce nasıl ilerlemeliyim?
Özellikle bu konularda fikrinizi merak ediyorum:
Açıkçası gömülü Linux ve kernel portlama tarafında çok tecrübeli değilim ama araştırarak öğrenmeye çalışıyorum. Modemi kurcaladıkça da epey şey öğrendim.
Özellikle bu tarz modemler ve OpenWrt geliştirmeleriyle uğraşan arkadaşların fikirlerini almak isterim.
UART adaptörü geldiğinde de gelişmeleri konuya eklerim. Belki beraber bu modeme OpenWrt desteği kazandırabiliriz.
Elimde Turkcell Superonline'ın verdiği ZTE ZXHN H267A V1.0 modem var. Bir süredir bu modeme OpenWrt kurabilir miyim diye uğraşıyorum. İnternette bu modele özel pek fazla kaynak bulamayınca kendim kurcalamaya başladım. Epey ilerledim ama birkaç konuda yardıma ihtiyacım var. Yaptıklarımı da burada paylaşmak istedim.
İlk olarak SSH erişimini açtım
Aslında modemin web arayüzünde Root hesabıyla giriş yapabiliyordum. Yani başlangıçta zaten gelişmiş yönetim paneline erişimim vardı.
Buradan config.bin dosyasını indirdim. GitHub'daki zte-config-utility aracını kullanarak yapılandırmayı açıp inceledim.
SSH ile ilgili SSH_ProcType ayarını 1 yerine 0 yapıp dosyayı tekrar modeme yükledim.
Böylece SSH üzerinden normal Linux kabuğuna ulaşabildim. Tam root yetkim yok ama sistem dosyalarını okuyabiliyorum.
Modemin donanımını ve flash yapısını inceledim
SSH'ye girdikten sonra /proc/cpuinfo, /proc/mtd gibi dosyalardan cihazı araştırmaya başladım.
Bulduğum bilgiler:
Kod:
Model : ZTE ZXHN H267A
Donanım : V1.0.8
Firmware : V1.0.1_TRT26
Bootloader : V1.0.2
İşlemci : Ralink MT751020
Mimari : MIPS 32-bit Big Endian
Kernel : Linux 2.6.36
RAM : Yaklaşık 128 MB fiziksel
Flash tarafında iki kernel ve iki rootfs bölümü olduğunu gördüm.
Kod:
mtd1 Bootloader 256 KB
mtd2 tag 256 KB
mtd3 config 2 MB
mtd4 rootfs1 20 MB
mtd5 kernel1 4 MB
mtd6 kernel2 4 MB
mtd7 rootfs2 20 MB
mtd8 ram_flash 11 MB
Windows'ta Tftpd64 kurup SSH üzerinden TFTP kullanarak bu bölümlerin yedeklerini bilgisayara aldım. Bootloader'ı da birkaç kez yedekleyip hash değerlerini karşılaştırdım.
Firmware ve kernel dosyalarını da açmayı başardım
İlginç olan şu: kernel1 ve kernel2 dosyaları 4 MB olmasına rağmen aralarında sadece 6 bayt fark çıktı. Farkların hepsi ilk 256 baytlık başlıkta.
Ayrıca cihazın hangi firmware bankasından açıldığını da öğrendim.
Kod:
current: 1
Image Current CRC Integrity Bootable
1 Y Y Y Y
2 N Y Y Y
Yani şu an birinci bankadan açılıyor, ikinci banka da geçerli görünüyor.
Kernel dosyalarının başında ZTE'ye özel bir başlık var. İlk 256 baytı çıkardıktan sonra devamının LZMA ile sıkıştırıldığını fark ettim.
7-Zip ile açınca yaklaşık 4,57 MB'lık gerçek Linux kernel imajını elde ettim. İçinden de Ralink MT751020 SOC ve Linux 2.6.36 derleme bilgilerini buldum.
Rootfs tarafında da biraz uğraştım. rootfs1 ve rootfs2 dosyalarını doğrudan açamadım ama çalışan sistemin /dev/mtdblock8 üzerinden SquashFS kullandığını tespit ettim.
ram_flash bölümünü yedekleyip 7-Zip ile açınca 1.366 dosyayı ve 50 klasörü çıkarmayı başardım. İçindeki programları, başlangıç scriptlerini ve kernel modüllerini de inceleyebiliyorum.
Sürücü tarafında neler var?
Firmware içerisinde şu modülleri buldum:
Kod:
mt7603eap.ko
mt7612e_ap.ko
raeth.ko
qdma.ko
hw_nat.ko
mt7510ptm.ko
mt7510sar.ko
tc3162_dmt_mt7510.ko
Wi-Fi ve Ethernet modüllerinin çalışan sistemde yüklü olduğunu da /proc/modules üzerinden kontrol ettim.
Tabii bunlar Linux 2.6.36 için derlenmiş sürücüler. Güncel OpenWrt'de doğrudan çalışmayacaklarının farkındayım.
Şu an nerede takıldım?
Asıl hedefim modeme OpenWrt kurmak. Araştırırken OpenWrt'nin EcoNet tarafındaki çalışmalarına ve eski Linux kaynaklarına ulaştım:
OpenWrt EcoNet
EN751221 Linux 2.6 kaynakları
Fakat bunların MT751020 üzerinde doğrudan çalıştığını doğrulayamadım.
Bir de bootloader tarafını henüz tam çözemedim. Firmware'de ttyS0 115200 seri konsol yapılandırması var. Bu yüzden CP2102 USB–TTL adaptör alacağım. Geldiğinde anakart üzerindeki UART pinlerini bulup bootloader açılış kayıtlarını incelemek istiyorum.
İmkân varsa kernel'i doğrudan RAM üzerinden test etmek istiyorum. Böylece flash'a yazmadan önce açılıp açılmadığını görebilirim.
Şunu da belirteyim: Şu ana kadar modeme OpenWrt veya başka bir kernel flashlamadım. Orijinal firmware hâlâ çalışıyor.
Sizce nasıl ilerlemeliyim?
Özellikle bu konularda fikrinizi merak ediyorum:
- MT751020 işlemci için kullanabileceğim bir OpenWrt portu veya uygun Linux kaynak kodu bilen var mı?
- EcoNet/EN751221 kaynaklarını bu işlemciye uyarlamak ne kadar mümkün?
- Bu ZTE'nin bootloader'ından TFTP ile RAM'e kernel yükleyip test etme şansımız olabilir mi?
- Önce yalnızca Ethernet ve temel Linux sistemi çalışan minimal bir OpenWrt hazırlamak mantıklı mı?
Açıkçası gömülü Linux ve kernel portlama tarafında çok tecrübeli değilim ama araştırarak öğrenmeye çalışıyorum. Modemi kurcaladıkça da epey şey öğrendim.
Özellikle bu tarz modemler ve OpenWrt geliştirmeleriyle uğraşan arkadaşların fikirlerini almak isterim.
UART adaptörü geldiğinde de gelişmeleri konuya eklerim. Belki beraber bu modeme OpenWrt desteği kazandırabiliriz.