Rehber Snapdragon Port Kılavuzu

mbtt

Deneyimli Üye
Deneyimli Üye
MIUI Sever
Adım
Lütfi
Cihazım
Le Pro3
Yaş
26
Konum
ankara
Katılım
22 Mayıs 2016
Konular
68
Mesajlar
102
Tepkime puanı
215
Puanları
43
DİPNOT
BU İŞLEMDEN DOĞACAK SORUNLARDAN ŞAHSIM VE FORUM MIUITR SORUMLU TUTULAMAZ.


AÇIKLAMA
Bu anlatım OSBusters grubunun yayınladığı kılavuzdan çevirilmiştir.

Üstüne eklemeler yapılıp temizlenmiş ve genel bir anlatım elde edilmiştir. 821 - 410 arası 4 - 5 farklı işlemcide denendi çalıştığı gözlemlendi.

Bu yöntemle aynı işlemci ve benzer özelliklere sahip cihazlar arasında port yapılabilir.

Ricam eğer bu kılavuzdan bir yardım aldıysanız konunuzun teşekkürler kısmında benim de ismim geçsin.


ANLATIM
Temizlik
Port romun içindeki .mbn ve modem dosyalarını yani Recovery ve Bootloader gibi dosyaları MUTLAKA ve MUTLAKA TEMİZLEYİN.

Bu dosyalar firmware-update klasöründe bulunur genellikle. Ancak her yeri tam olarak kontrol ettiğinizden emin olun.

Aksi takdirde telefonunuz kullanılmaz hale gelir.

Port romun içinde sadece meta.inf - system - boot.img - data (varsa) - file_context (varsa) kalsın.

Bu dosyalar genellikle aşağıdakiler gibidirler.

Görselleri görebilmek için kayıt olmanız gerekmektedir

Meta.inf Düzenleme
Eğer port ya da stock romunuz .dat ya da .img yükleyecek şekilde ayarlanmışsa ve siz scriptinizi açık sistem yükleyecek hale getirmek istiyorsanız aşağıda linkini verdiğim kılavuzumu takip edebilirsiniz.



Ve eğer mevcut ise:

"get_device_compatible(…." ya da "assert(getprop…." kodlarını temizleyin.

Temizlik kısmında temizleyin dediğimiz .mbn ve modem dosyaların yükleme kodlarını temizleyin.

Genellikle aşağıdaki gibi görünürler:
Kod:
# ---- radio update tasks ----

ui_print("Patching firmware images...");
ifelse(msm.boot_update("main"), (
package_extract_file("firmware-update/cmnlib64.mbn", "/dev/block/bootdevice/by-name/cmnlib64");
package_extract_file("firmware-update/ddr.mbn", "/dev/block/bootdevice/by-name/ddr");
package_extract_file("firmware-update/cmnlib.mbn", "/dev/block/bootdevice/by-name/cmnlib");
package_extract_file("firmware-update/hyp.mbn", "/dev/block/bootdevice/by-name/hyp");
package_extract_file("firmware-update/pmic.elf", "/dev/block/bootdevice/by-name/pmic");
package_extract_file("firmware-update/tz.mbn", "/dev/block/bootdevice/by-name/tz");
package_extract_file("firmware-update/emmc_appsboot.mbn", "/dev/block/bootdevice/by-name/aboot");
package_extract_file("firmware-update/rpm.mbn", "/dev/block/bootdevice/by-name/rpm");
package_extract_file("firmware-update/devcfg.mbn", "/dev/block/bootdevice/by-name/devcfg");
package_extract_file("firmware-update/xbl.elf", "/dev/block/bootdevice/by-name/xbl");
package_extract_file("firmware-update/keymaster.mbn", "/dev/block/bootdevice/by-name/keymaster");
), "");
ifelse(msm.boot_update("backup"), (
package_extract_file("firmware-update/cmnlib64.mbn", "/dev/block/bootdevice/by-name/cmnlib64bak");
package_extract_file("firmware-update/cmnlib.mbn", "/dev/block/bootdevice/by-name/cmnlibbak");
package_extract_file("firmware-update/hyp.mbn", "/dev/block/bootdevice/by-name/hypbak");
package_extract_file("firmware-update/pmic.elf", "/dev/block/bootdevice/by-name/pmicbak");
package_extract_file("firmware-update/tz.mbn", "/dev/block/bootdevice/by-name/tzbak");
package_extract_file("firmware-update/emmc_appsboot.mbn", "/dev/block/bootdevice/by-name/abootbak");
package_extract_file("firmware-update/rpm.mbn", "/dev/block/bootdevice/by-name/rpmbak");
package_extract_file("firmware-update/xbl.elf", "/dev/block/bootdevice/by-name/xblbak");
package_extract_file("firmware-update/keymaster.mbn", "/dev/block/bootdevice/by-name/keymasterbak");
), "");
msm.boot_update("finalize");
package_extract_file("firmware-update/NON-HLOS.bin", "/dev/block/bootdevice/by-name/modem");
package_extract_file("firmware-update/adspso.bin", "/dev/block/bootdevice/by-name/dsp");
package_extract_file("firmware-update/BTFM.bin", "/dev/block/bootdevice/by-name/bluetooth");
package_extract_file("firmware-update/devinfo.bin", "/dev/block/bootdevice/by-name/devinfo");

Boot.img Düzenleme
Taban ve port romun boot.img dosyalarını ayrıştırın (decompile).

Renk kodlaması:troll:

Kırmızı: Stock boot ve dosyalarını simgeliyor
Mavi: Port boot ve dosyalarını simgeliyor


Ayrıştırmak için:

zipini indirin ve masaüstünde bir klasöre çıkarın.

Ardından stock romunuzun boot.img dosyasını unpackimg.bat dosyasının üzerine sürükleyip bırakın.

Görselleri görebilmek için kayıt olmanız gerekmektedir


2 klasör çıkaracaktır split_img ve ramdisk adında. bu 2 klasörü stock adlı bir klasör açıp onun içinde atın.

Görselleri görebilmek için kayıt olmanız gerekmektedir


Ve yine ardından port romdan aldığınız boot.img içinde aynısını yapın ve onunda çıkan 2 klasörünü port adlı bir klasör açıp onun içine atın.

Görselleri görebilmek için kayıt olmanız gerekmektedir



Geri Toplamak için:

port adlı klasörün içindeki split_img ve ramdisk klasörlerini indirdiğiniz zipi açtığınız klasörün içine geri atın ve repackimg.bat dosyasına tıklayın.

Görselleri görebilmek için kayıt olmanız gerekmektedir


Size image-new.img adlı bir dosya verecektir bu sizin portlanmış boot.img dosyanızdır.

Görselleri görebilmek için kayıt olmanız gerekmektedir


Bu dosyayı boot.img olarak adlandırıp yeniden port romunuzun içine atın.

Portlamak için:

a-) split_img

split_img klasörünün altındaki boot.img-zImage ve boot.img-dtb dosyalarını tabandan porta atın.

Görselleri görebilmek için kayıt olmanız gerekmektedir



b-) ramdisk

ramdisk klasörünün altında fstab.qcom dosyalarını yan yana açın.

1-) /dev/block/xxxxxxx den başlayıp /device bölümünün son satırına kadar kodları silin.
2-) onların yerine tabanın içindeki dosyadan #TODO VE #<src> arasında yazan kodları yapıştırın.

Ya da fstab.qcom dosyasını direk yer değiştirin. :troll:

Yani özetle port romun boot.img dosyasındaki fstab.qcom dosyası stock romdaki gibi görünecek.

1-)
Görselleri görebilmek için kayıt olmanız gerekmektedir


2-)
Görselleri görebilmek için kayıt olmanız gerekmektedir



Bu işlemi taban ve port init.rc dosyasını karşılaştırarak tamamlayın, farklı romların farklı protokolleri içerebileceğini bu yüzden her yerden kontrol edilmesi gerektiğini unutmayın.

fstab.qcom kısmında yaptığımız gibi ramdisk/uneventd.rc ve ramdisk/file_contexts ramdisk/init.target.rc gibi dosyaları da karşılaştırabilirsiniz.

Build.prop Eşitleme
İki romunda system ana dizininden build.prop dosyalarını boot.img bölümünde yaptığımız gibi karşılaştırıp ;

brand - model no vs gibi bölümleri tabandan porta değiştirebilirsiniz.

Ancak ro.product.manufacturer satırının değişmesi 3. parti video ve kamera uygulamalarında hata verebilmesine yol açıyor.

ro.product.devicesatırının değiştirilmesi ise bazı özellikleri çalışmamasına neden olabiliyor.

Portlama
system/bin dizinindeki eksik dosyaları tabandan -> porta tamamlayın aksi belirtilmedikçe hiçbir dosyayı yer değiştirmeyin.

Aynı işlemi xbin- fonts - etc - usr - tts vb. klasörler ve onların alt klasörleri içinde yapabilirsiniz.

system/etc/firmware ve system/etc/wifi içindeki dosyaları tabandan -> porta atıp değiştirin.

system/usr/keylayout içinden;
goodix.kl (varsa)
gpio-keys.kl
Generic.kl

ve diğer .kl dosyalarını tabandan -> porta atın.


taban romdaki system/framework/framework-res.apk uygulamasını winrar ile açın.

Ve framework-res.apk/res/xml/ içinden;

storage_list.xml
power_profile

dosyalarını tabandan yine winrar ile açtığımız;

port system/framework/framework-res.apk uygulamasının framework-res.apk/res/xml/ dizinine atın.

Çapraz Port
Bu kısımda eğer farklı işlemciler arasında port yapıyorsanız - örneğin: "msm8998 - msm8996" gibi - çapraz porta has adımları uygulayın.

1-Boot.img İçerisindeki Değişiklikler

a) .rc Dosyaları

  • init.qcom.rc
  • init.target.rc
  • init.power.rc (varsa)
  • ueventd.qcom.rc

gibi .rc uzantılı tüm dosyaları açıp stock ve porttaki satırlardaki farklılıkları tespit edin ve gerek varsa yamaları yapın.
Bu yamalar eksik satırı tamamlama ya da var olan ve farklı olan satırları düzenleme olabilir.

b) .sh Dosyaları

  • init.qcom.sh
  • init.qcom.usb.sh

gibi .sh uzantılı tüm dosyaları açıp stock ve porttaki satırlardaki farklılıkları tespit edin ve gerek varsa yamaları yapın.
Bu yamalar eksik satırı tamamlama ya da var olan ve farklı olan satırları düzenleme olabilir.


2-Sistem İçerisindeki Değişiklikler

a) lib/hw ve lib64/hw

Bu iki klasörde işlemci ismini taşıyan lib dosyaları bulunur.

Örneğin:
  • audio.primary.msm8996.so
  • camera.msm8996.so
  • copybit.msm8996.so

gibi.

Siz ise kendi romunuzda bulunan bu klasörlerin içerisinden kendi işlemcinizin adını taşıyan dosyaları port romda aynı dizine atacaksınız.


b) vendor/lib/hw ve vendor/lib64/hw

Yukarıdaki gibi bu iki klasörde de işlemci ismini taşıyan lib dosyaları bulunur.

Örneğin:
  • activity_recognition.msm8996.so
  • gatekeeper.msm8996.so
  • keystore.msm8996.so

gibi.

Siz ise kendi romunuzda bulunan bu klasörlerin içerisinden kendi işlemcinizin adını taşıyan dosyaları port romda aynı dizine atacaksınız.


c) bin

Bu klasör içerisinden stockta olup port romda eksik olan bin dosyalarını stocktan -> porta atın.
İlk aşamada var olanları değiştirmeyin eğer hata düzeltmede gereksinim duyarsanız o zaman değişim yaparsınız.


d) etc

Bu klasör içerisinde aşağıdaki gibi dosyalar bulunur.

Örneğin:
  • init.qcom.audio.sh
  • init.qcom.wifi.sh
  • media_codecs.xml
  • media_codecs_performance.xml
  • media_profiles.xml
  • audio_effects.conf
  • mixer_paths.xml

Bu dosyaları stock ve port olarak karşılaştırıp kontrol edin eksik ve farklı satırları stocktan -> porta yamalayın.
Eğer yine işe yaramazsa tamamen değiştirin.

Ve dahi:
Bu dosyalara ek olarak işlemciler arasında .sh .xml .conf dosyalarında farklar bulunabiliyor.
Bunu göz önüne alarak bu türlerde olan diğer dosyalarıda kontrol edin.

Oreo İçin
Oreo sürümü ile birlikte sistemde ve protokollerde bazı değişiklikler yapıldı.

1-) Bazı ramdisk dosyaları boot.img içerisinden vendor'a alındı

Fstab
  • fstab.qcom
fstab artık boot.img'de değil vendor/etc'de bu yüzden stock romun vendor/etc'sinden port rom vendor/etc'ye atacaksınız.


.rc dosyaları
  • init.qcom.rc
  • init.qcom.usb.rc
  • init.target.rc
Yukarıda ismi geçen dosyalar artık boot.img'de değil vendor/etc/init/hw'de bu yüzden stock romun vendor/etc/init/hw'sinden port rom vendor/etc/init/hw'ye atacaksınız.
Ayrıca diğer .rc uzantılı dosyalar varsa yine aynı dizinlerden kontrol edip stock vendor/etc/init/hw'den port vendor/etc/init/hw'ye doğru taşıyacaksınız.


.sh dosyaları
  • init.qcom.sh
  • init.class_main.sh
  • init.qcom.usb.sh
  • init.qcom.sensors.sh
Yukarıda ismi geçen dosyalar artık boot.img'de değil vendor/bin'de bu yüzden stock romun vendor/bin'den port rom vendor/bin'e atacaksınız.
Ayrıca diğer .sh uzantılı dosyalar varsa yine aynı dizinlerden kontrol edip stock vendor/bin'den port vendor/bin'e doğru taşıyacaksınız.


ueventd
  • ueventd.rc
ueventd artık boot.img'de değil vendor ana dizininde bu yüzden stock romun vendor ana dizininden -> port rom vendor ana dizinine atacaksınız.

Yine bu dosyaların hepsinin ayrıntılı şekilde araştırılması service satırlarının düzgünce incelenmesi gerekir.
Hatalı dizinde bulunan dosya varsa bu satırlar dosyalar için uygun yeri göstermelidir.


2-) Yeni bazı HAL ve sağlayıcıları eklendi.

Kod:
vendor.qti.hardware.perf@1.0_vendor.so
vendor.qti.hardware.perf@1.0_vendor.so

gibi bazı libler

Kod:
vendor/bin/hw/vendor.qti.hardware.perf@1.0-service

gibi bazı binler

Kod:
vendor/etc/init/vendor.qti.hardware.perf@1.0-service.rc

gibi ekstra eklenmiş bazı .rc dosyaları eklendi.


Bunlar için yöntemim ise;

-lib
-lib64
-vendor/lib
-vendor/lib64
-vendor/bin/hw/
-vendor/etc/init/


gibi klasörler araştırılarak bu tip stockta olan ama portta olmayan dosyaların tamamlanması var ise yamalanmasıdır.

Ayrıca bu dosyalarla alakalı herhangi bir donanımsal - yazılımsal bug olursa bu dosyalarında değiştirilmesi gerekir.

Hata Düzeltme
Ses Yoksa:
system/lib/hw/
  • audio.primary.msm****.so
  • audio.primary.default.so
system/lib64/hw/
  • audio.primary.msm****.so
  • audio.primary.default.so
(system/etc/mixer_paths.xml ve system/etc/acdbdata klasörlerini de kontrol etmeniz gerekebilir.)


Ses Hoparlörde Var Ama Kulaklıkta Yoksa Ya Da Tam Tersiyse:
system/etc/

  • mixer_paths.xml (aynı zamanda tabanla patchlemeyide deneyebilirsiniz.)

Seste Bozulma Ve Ya Cızırtı Sıkıntısı Varsa:
system/etc/acdbdata/MTP/
  • MTP_***.acdb (Bütün Dosyalar)

Ev Ya da Herhangi Bir Hissi Tuş Çalışmıyorsa:
system/usr/keylayout/
  • goodix.kl
  • gpio-keys.kl (Önemli)
  • Generik.kl

Harici Hafıza Kartı Görünmüyorsa:
Boot.img Düzenleme
Bölümündeki Sd Kart bölümünü deneyin.


Video Ve Video Çözümlemeleri Çalışmıyorsa:
system/etc/firmware/
  • venus.*** (venus ile başlayan bütün dosyalar)

Sensörler Çalışmıyorsa:
  • system/lib/hw/sensors.msm****.so (ya da sensors.lsm6db0.so)
  • system/lib64/hw/sensors.msm****.so (ya da sensors.lsm6db0.so)
  • system/lib/libsensorservice.so
  • system/lib64/libsensorservice.so
  • İki romunda ramdisk/ueventd.qcom.rcdosyalarını karşılaştırın ve eksik satırları tabandan -> porta şeklinde tamamlayın

Led Bildirim Çalışmıyorsa:
  • system/lib/hw/lights.msm****.so
  • system/lib64/hw/lights.msm****.so

Titreşim Çalışmıyorsa:
  • system/lib/libhardware_legacy.so
  • system/lib64/libhardware_legacy.so

FM Çalışmıyorsa:
  • system/lib/qcomfm_jni.so
  • system/lib64/qcomfm_jni.so

Wifi Çalışmıyorsa:
  • system/lib/modules/wlan.ko
[Not : Miui'de wlan.ko'nun ismi pronto_wlan.ko'dur ve system/lib/modules/pronto/ klasörünün içinde bulunur.Yani iki klasörde de değiştirmelisiniz.]

Bazı cihazlarda wlan.ko dosyası bulunmayabiliyor. O zaman aşağıdakileri değiştirmeyi deneyebilirsiniz :

  • system/lib/libwcnss_qmi.so
  • system/lib64/libwcnss_qmi.so

Eğer Wİ-Fİ hızı ve ya herhangi bir Wİ-Fİ sıkıntısı varsa:

  • system/etc/wifi/ -- bütün dosyalar
  • system/etc/firmware/wlan/ -- bütün dosyalar


Kamera ve flaş çalışmıyorsa:
system/vendor/lib/
  • libactuator_***.so (libactuator ile başlayan hepsini)
  • libchromatix_***.so (libchromatix ile başlayan hepsini)
  • libmmcamera_***.so (libmmcamera ile başlayan hepsini)
  • liboemcamera.so
system/lib/
  • libmm-qcamera.so
  • libmmcamera_interface.co

system/lib/hw/
  • camera.msm****.so

Eğer izinler ile ilgili bir sıkıntı yaşıyorsanız:
İki romunda etc/permissions klasörlerinden handheld_core_hardware.xml ve platform.xml dosyalarını boot.img konusunda yaptığımız gibi karşılaştırıp eksik satırları tamamlayabilirsiniz.

Eğer gerekiyorsa diğer permissions içindeki dosyalarıda aynı şekilde karşılaştırabilirsiniz.

Bu kısımları tamamladıktan sonra meta.inf - system - boot.img - data (varsa) - file_context (varsa) dosyalarını zipleyip romu yüklemeye hazırlayın.

Eğer açarda romu paylaşırsanız alırım oraya bir OSBusters ve Mbtt Credits
 
Son düzenleme:

mbtt

Deneyimli Üye
Deneyimli Üye
MIUI Sever
Adım
Lütfi
Cihazım
Le Pro3
Yaş
26
Konum
ankara
Katılım
22 Mayıs 2016
Konular
68
Mesajlar
102
Tepkime puanı
215
Puanları
43
GÜNCELLEME - 04.05.2019 -
Açıklamalar
genişletildi.
Anlatım resimlerle desteklendi.
Renklendirmeler yapıldı.
boot.img açma-kapama anlatımı eklendi.
.dat ve .img şeklinde olan romları açık klasör haline getirme anlatımı eklendi.
Oreo için ek yöntemler ve açıklamalar eklendi.
Çapraz Port anlatımı eklendi.
 

ahmetkydr

Yeni Üye
Yeni Üye
MIUI Sever
SMS Onaylı
Adım
ahmet
Cihazım
mi 8 se
Yaş
24
Konum
bursa
Katılım
28 Nisan 2019
Konular
1
Mesajlar
24
Tepkime puanı
18
Puanları
3
teşekkürler güzel anlatım
 

yousends

Yeni Üye
Yeni Üye
MIUI Sever
SMS Onaylı
Adım
ali
Cihazım
mi 8 lite
Yaş
24
Konum
turkiye
Katılım
25 Mart 2019
Konular
0
Mesajlar
11
Tepkime puanı
2
Puanları
3
2022 gecerliligi devam ediyormu
 
Üst Alt