Neden USB haritalandırması yapmalısınız?​

USB haritalandırma işlemi aslında macOS'a USB portlarımızı tanımlayıp, bu portların hangi tip olduğunu bildirmek. USB haritalandırması yapmamızı gerektiren sebepler ise:
  • macOS, hangi tip USB portuna sahip olduğunuzu belirlemede oldukça başarısız
  • Bazı portlar kendi hızlarının altında çalışabilir(3.1 portların 2.0 hızında çalışması)
  • Bazı portlar direkt çalışmayabilir
  • Bluetooth çalışmayabilir
  • Handoff gibi bazı servisler olması gerektiği gibi çalışmayabilir
  • Uyku modu çalışmayabilir
  • Hot-Plug çalışmaz
  • XhciPortLimit veri bozulmasına sebep olabilir
Artık neden USB haritalandırması yapmanız gerektiğini bildiğinize göre USB haritalandırmanın teknik bilgisine göz atabiliriz. USB'de tüm portların aynı olmadığını fakat bazı portların, diğer portları da içinde barındırdığını anlamamız gerekiyor.
  • USB 3.0 portu macOS üzerinde 2 port olarak görünüyor. USB 2.0 ve USB 3.0 portu olarak görünüyor.
  • Tüm USB 3.0 aygıtların, USB 2.0'ı desteklemesi gerektiğinden dolayı USB, geriye dönük uyumluluğunu da bu şekilde koruyor.
USB portunun şemasına bakarak bunu daha iyi anlayabiliriz:
usb.webp




USBToolBox'ı kullanarak USB'yi haritalandırma​

Bu işlem anlatımı Hackintosh öncesi Windows üzerinden haritalandırmayı esas almıştır. Eğer bu rehberi kurulum sonrasında yapacaksanız, macOS üzerinden de haritalandırma yapabilirsiniz. Benim tavsiyem, kurulum öncesi haritalandırmayı çıkarmış olmak. Ayrıca belirtmem gerekir ki bu aracın geliştiricisi, USB haritalandırmasının macOS üzerinde yapılmasını tavsiye etmiyor. X79 tarzı kartlarda bulunan ASMedia kontrolcüler için bir işe yaramayacaktır. USBToolBox'ı kullanabilmek için sisteminizde Python yazılımının yüklü olması lazım.

Öncelikle USBToolBox'ı indirmek ile başlayalım. Windows üzerinden anlatımı esas aldığımız için, Windows.Zip'i indiriyoruz ve masaüstüne çıkartıyoruz. Çıkartma işleminden sonra haritalandırma aracını başlatmak için USBToolBox/dist/Windows.exe'yi açıyoruz.
usb1.webp


Karşımıza gelen komut ekranında Discover Ports seçeneği yani portları ve port türlerini araması için D tuşuna basıp enterlıyoruz.
usb2.webp


Esasında bu araç, Windows üzerinde kullanıldığında görebileceğiniz üzere sistemdeki port ve port türlerini (guessed) etiketi ile tespit etmeye çalışıyor. Daha nihai bir haritalandırma için Port Discovery ekranında iken her bir porta USB aygıtı takın:
  1. USB aygıtınızı çıkarmadan ve başka bir porta takmadan önce listenin aygıtınızı göstermesini bekleyin. 5 saniyede bir yenilendiğini, Waiting 5 seconds ibaresinden anlayabiliriz.
  2. USB-C portu için turkuaz renkte görebileceğiniz üzere kablo yönünü tek yönde taktım, diğer yönde takmadım. Ben bu aygıt ile Hackintosh yapmayacağım için bu şekilde yaptım lakin sizler her iki yönde de takın.
  3. Mümkün mertebede her bir USB 3.0 portuna hem USB 2.0 bir aygıt hem de USB 3.0 bir aygıt takın.

usb4.webp


Haritalandırma adımlarını uygulayıp, işlemleri tamamladığınız zaman ana menüye dönmek için B harfini tuşlayıp enterlayalım.
usb5.webp


Portları seçmek ve kexti oluşturmak için S harfini tuşlayıp enterlayalım.
usb6.webp


Bu aşamadaki işlemler kullanıcıdan kullanıcıya farklılıklar gösterecektir. Kimi kullanıcı direkt olarak K harfini tuşlayarak kexti oluşturacak, kimi kullanıcı macOS 15 port limiti için kullanmayacağı portu devre dışı bırakacak, kimisi de USB tip/türünü değiştirecek. Şöyle açıklık getirelim:
  • K. Build UTBMap.kext
    UTBMap.kext'i oluşturur ve beraberinde USBToolBox.kext'e ihtiyaç duyar.
  • A. Select All
    Hepsini Seç.
  • N. Select None
    Hiçbirini Seçme.
  • P. Enable All Populated Ports
    Yeşil olarak görüntülenen tüm portları aktifleştirir.
  • D. Disable All Empty Ports
    Yeşil olarak görüntülemediğiniz tüm portları devre dışı bırakır.
  • T. Show Types
    Tip/türleri görüntüleyin.
Ayrıca:
  • - Select ports to toggle with comma-delimited lists (eg. 1,2,3,4,5)
    Portları devre dışı bırakmak veya tekrar etkinleştirmek için virgüil ile ayrılmış değerler girin, örneğin: 1,2,3,4,5
  • - Change types using this formula T:1,2,3,4,5:t where t is the type
    USB tiplerini değiştirmek için T:1,2,3,4,5:t metodunu uygulayın. t yerine USB tipini gireceksiniz.
  • - Set custom names using this formula C:1:Name
    USB portlarını adlandırmak için C:1:Name metodunu uygulayın. Name yerine adlandırmayı girin fakat Türkçe karakter kullanmayın. Bu işlemi örneğin kasanın ön port ve arka portlarını ayırmak için kullanabilirsiniz, sizlere kalmış.
USB Tipleri:
Kod:
USB 2.0 Tip A: 0
USB 3.0 Tip A: 3
USB-C giriş yön değiştirilmişse: 9
USB-C giriş yön değiştirilmemişse: 10
Dahili(Kamera, Bluetooth vb.): 255

  • Portları açıkça ayarladığınızdan sonra (Guessed) etiketi kaybolacaktır.
  • Doğru tespit edilen port tiplerini manuel olarak tekrardan ayarlamaya gerek yok çünkü USBToolBox, haritalandırma kextini oluştururken tespit ettiği değerleri kullanacaktır.
  • Companions'u devre dışı bırakmanızı önermem. Bunu C'yi tuşlayıp ayarlar kısmında Bind Companions seçeneği ile kapatabilirsiniz fakat bunu gereksiz buluyorum. USB 3.0 portunun, USB 2.0 yardımcısını bir diğer deyiş ile USB 3.0 portunda bulunan USB 2.0 kontrolcüsünü ayırarak devre dışı bırakmış oluyorsunuz. Bu durumda USB 3.0 portuna USB 3.0 aygıt takmadığınız müddetçe kullanamaz hale geliyor. O yüzden hiç dokunmayın veya biliyorsanız dokunun derim.
  • USB 3.0 portlarında bulunan USB 2.0 kontrolcüsü/yardımcısını, haritalandırmayı çıkarırken fiziksel konnektörün tipi olan USB 3.0 şeklinde ayarlayıp haritalandırmayı bitirmemizde fayda var.



Kexti Oluşturma​

Daha öncesinde de belirttiğim üzere yukarıdaki işlemler sistemden sisteme değişiklik gösterebilir. Bizim için gerekli işlemleri yaptıktan sonra K. Build UTBMap.kext seçeneğini K harfini tuşlayıp enterlayak seçiyoruz ve kextimiz oluşturuluyor.
kkext.webp


Komut ekranındaki çıktıdan da anlayabileceğimiz üzere kext dosyamız, dist klasörünün içerisinde UTBMap.kext adı ile bulunabilir.

Kexti Confige İşleme​

Öncelikle USBToolBox.kext'i de indirerek iki kexti EFI/OC/Kexts klasörüne atalım. Kişisel USB haritalandırma kextimiz olan UTBMap.kext, çalışabilmesi için beraberinde USBToolBox.kext'e ihtiyaç duyar. Akabinde config.plist dosyamızı açalım. Ben ProperTree kullanma taraftarıyım, bu bağlamda ProperTree ile açıyorum.
propertreesnapshot.webp


ProperTree aracılığı ile config.plist dosyamı açtıktan sonra CTRL+SHIFT+R veya File>OC Clean Snapshot seçeneğini kullanıyorum. Bu bağlamda OC klasöründeki son değişiklikler config.plist dosyamıza işlenecek. Bu işlem sonrasında Kernel>Add kısmına göz atalım. Kextlerimiz eklenmiş olacak fakat kext sıralaması bozulacaktır, bunu düzeltmeyi unutmayın(Lilu>VirtualSMC>WhateverGreen vs.).

Not: USBToolBox, USBInjectAll.kext ve XhciPortLimit>True değeri ile çakışmaktadır. Bahsi geçen kexti devre dışı bırakın. XhciPortLimit ayarı ise Kernel>Quirks kısmında bulabilirsiniz. Günümüz güncelliği için verimliliğini yitirmiş yöntemlerdir.

propertreekernel.webp


Kernel>Add kısmındaki düzenlemelerimizi de yaptıktan sonra kaydedip çıkabiliriz. Bu bağlamda sonraki aşama olarak macOS kurulumuna geçer veya halihazırda macOS yüklü ise macOS'u önyükleyerek USB kontrolcülerimizin son durumunu diler Hackintool dilerseniz de Sistem Raporu kısmından görüntüleyebilirsiniz.


Kaynak: Dortania - Neden USB haritalandırması yapmalısınız?
İyi forumlar.
 

Neden USB haritalandırması yapmalısınız?​

USB haritalandırma işlemi aslında macOS'a USB portlarımızı tanımlayıp, bu portların hangi tip olduğunu bildirmek. USB haritalandırması yapmamızı gerektiren sebepler ise:
  • macOS, hangi tip USB portuna sahip olduğunuzu belirlemede oldukça başarısız
  • Bazı portlar kendi hızlarının altında çalışabilir(3.1 portların 2.0 hızında çalışması)
  • Bazı portlar direkt çalışmayabilir
  • Bluetooth çalışmayabilir
  • Handoff gibi bazı servisler olması gerektiği gibi çalışmayabilir
  • Uyku modu çalışmayabilir
  • Hot-Plug çalışmaz
  • XhciPortLimit veri bozulmasına sebep olabilir
Artık neden USB haritalandırması yapmanız gerektiğini bildiğinize göre USB haritalandırmanın teknik bilgisine göz atabiliriz. USB'de tüm portların aynı olmadığını fakat bazı portların, diğer portları da içinde barındırdığını anlamamız gerekiyor.
  • USB 3.0 portu macOS üzerinde 2 port olarak görünüyor. USB 2.0 ve USB 3.0 portu olarak görünüyor.
  • Tüm USB 3.0 aygıtların, USB 2.0'ı desteklemesi gerektiğinden dolayı USB, geriye dönük uyumluluğunu da bu şekilde koruyor.
USB portunun şemasına bakarak bunu daha iyi anlayabiliriz:
Eki Görüntüle 40441



USBToolBox'ı kullanarak USB'yi haritalandırma​

Bu işlem anlatımı Hackintosh öncesi Windows üzerinden haritalandırmayı esas almıştır. Eğer bu rehberi kurulum sonrasında yapacaksanız, macOS üzerinden de haritalandırma yapabilirsiniz. Benim tavsiyem, kurulum öncesi haritalandırmayı çıkarmış olmak. Ayrıca belirtmem gerekir ki bu aracın geliştiricisi, USB haritalandırmasının macOS üzerinde yapılmasını tavsiye etmiyor. X79 tarzı kartlarda bulunan ASMedia kontrolcüler için bir işe yaramayacaktır. USBToolBox'ı kullanabilmek için sisteminizde Python yazılımının yüklü olması lazım.

Öncelikle USBToolBox'ı indirmek ile başlayalım. Windows üzerinden anlatımı esas aldığımız için, Windows.Zip'i indiriyoruz ve masaüstüne çıkartıyoruz. Çıkartma işleminden sonra haritalandırma aracını başlatmak için USBToolBox/dist/Windows.exe'yi açıyoruz.
Eki Görüntüle 40448

Karşımıza gelen komut ekranında Discover Ports seçeneği yani portları ve port türlerini araması için D tuşuna basıp enterlıyoruz.
Eki Görüntüle 40450

Esasında bu araç, Windows üzerinde kullanıldığında görebileceğiniz üzere sistemdeki port ve port türlerini (guessed) etiketi ile tespit etmeye çalışıyor. Daha nihai bir haritalandırma için Port Discovery ekranında iken her bir porta USB aygıtı takın:
  1. USB aygıtınızı çıkarmadan ve başka bir porta takmadan önce listenin aygıtınızı göstermesini bekleyin. 5 saniyede bir yenilendiğini, Waiting 5 seconds ibaresinden anlayabiliriz.
  2. USB-C portu için turkuaz renkte görebileceğiniz üzere kablo yönünü tek yönde taktım, diğer yönde takmadım. Ben bu aygıt ile Hackintosh yapmayacağım için bu şekilde yaptım lakin sizler her iki yönde de takın.
  3. Mümkün mertebede her bir USB 3.0 portuna hem USB 2.0 bir aygıt hem de USB 3.0 bir aygıt takın.

Eki Görüntüle 40454

Haritalandırma adımlarını uygulayıp, işlemleri tamamladığınız zaman ana menüye dönmek için B harfini tuşlayıp enterlayalım.
Eki Görüntüle 40471

Portları seçmek ve kexti oluşturmak için S harfini tuşlayıp enterlayalım.
Eki Görüntüle 40472

Bu aşamadaki işlemler kullanıcıdan kullanıcıya farklılıklar gösterecektir. Kimi kullanıcı direkt olarak K harfini tuşlayarak kexti oluşturacak, kimi kullanıcı macOS 15 port limiti için kullanmayacağı portu devre dışı bırakacak, kimisi de USB tip/türünü değiştirecek. Şöyle açıklık getirelim:
  • K. Build UTBMap.kext
    UTBMap.kext'i oluşturur ve beraberinde USBToolBox.kext'e ihtiyaç duyar.
  • A. Select All
    Hepsini Seç.
  • N. Select None
    Hiçbirini Seçme.
  • P. Enable All Populated Ports
    Yeşil olarak görüntülenen tüm portları aktifleştirir.
  • D. Disable All Empty Ports
    Yeşil olarak görüntülemediğiniz tüm portları devre dışı bırakır.
  • T. Show Types
    Tip/türleri görüntüleyin.
Ayrıca:
  • - Select ports to toggle with comma-delimited lists (eg. 1,2,3,4,5)
    Portları devre dışı bırakmak veya tekrar etkinleştirmek için virgüil ile ayrılmış değerler girin, örneğin: 1,2,3,4,5
  • - Change types using this formula T:1,2,3,4,5:t where t is the type
    USB tiplerini değiştirmek için T:1,2,3,4,5:t metodunu uygulayın. t yerine USB tipini gireceksiniz.
  • - Set custom names using this formula C:1:Name
    USB portlarını adlandırmak için C:1:Name metodunu uygulayın. Name yerine adlandırmayı girin fakat Türkçe karakter kullanmayın. Bu işlemi örneğin kasanın ön port ve arka portlarını ayırmak için kullanabilirsiniz, sizlere kalmış.
USB Tipleri:
Kod:
USB 2.0 Tip A: 0
USB 3.0 Tip A: 3
USB-C giriş yön değiştirilmişse: 9
USB-C giriş yön değiştirilmemişse: 10
Dahili(Kamera, Bluetooth vb.): 255

  • Portları açıkça ayarladığınızdan sonra (Guessed) etiketi kaybolacaktır.
  • Doğru tespit edilen port tiplerini manuel olarak tekrardan ayarlamaya gerek yok çünkü USBToolBox, haritalandırma kextini oluştururken tespit ettiği değerleri kullanacaktır.
  • Companions'u devre dışı bırakmanızı önermem. Bunu C'yi tuşlayıp ayarlar kısmında Bind Companions seçeneği ile kapatabilirsiniz fakat bunu gereksiz buluyorum. USB 3.0 portunun, USB 2.0 yardımcısını bir diğer deyiş ile USB 3.0 portunda bulunan USB 2.0 kontrolcüsünü ayırarak devre dışı bırakmış oluyorsunuz. Bu durumda USB 3.0 portuna USB 3.0 aygıt takmadığınız müddetçe kullanamaz hale geliyor. O yüzden hiç dokunmayın veya biliyorsanız dokunun derim.
  • USB 3.0 portlarında bulunan USB 2.0 kontrolcüsü/yardımcısını, haritalandırmayı çıkarırken fiziksel konnektörün tipi olan USB 3.0 şeklinde ayarlayıp haritalandırmayı bitirmemizde fayda var.



Kexti Oluşturma​

Daha öncesinde de belirttiğim üzere yukarıdaki işlemler sistemden sisteme değişiklik gösterebilir. Bizim için gerekli işlemleri yaptıktan sonra K. Build UTBMap.kext seçeneğini K harfini tuşlayıp enterlayak seçiyoruz ve kextimiz oluşturuluyor.
Eki Görüntüle 40538

Komut ekranındaki çıktıdan da anlayabileceğimiz üzere kext dosyamız, dist klasörünün içerisinde UTBMap.kext adı ile bulunabilir.

Kexti Confige İşleme​

Öncelikle USBToolBox.kext'i de indirerek iki kexti EFI/OC/Kexts klasörüne atalım. Kişisel USB haritalandırma kextimiz olan UTBMap.kext, çalışabilmesi için beraberinde USBToolBox.kext'e ihtiyaç duyar. Akabinde config.plist dosyamızı açalım. Ben ProperTree kullanma taraftarıyım, bu bağlamda ProperTree ile açıyorum.
Eki Görüntüle 40542

ProperTree aracılığı ile config.plist dosyamı açtıktan sonra CTRL+SHIFT+R veya File>OC Clean Snapshot seçeneğini kullanıyorum. Bu bağlamda OC klasöründeki son değişiklikler config.plist dosyamıza işlenecek. Bu işlem sonrasında Kernel>Add kısmına göz atalım. Kextlerimiz eklenmiş olacak fakat kext sıralaması bozulacaktır, bunu düzeltmeyi unutmayın(Lilu>VirtualSMC>WhateverGreen vs.).

Not: USBToolBox, USBInjectAll.kext ve XhciPortLimit>True değeri ile çakışmaktadır. Bahsi geçen kexti devre dışı bırakın. XhciPortLimit ayarı ise Kernel>Quirks kısmında bulabilirsiniz. Günümüz güncelliği için verimliliğini yitirmiş yöntemlerdir.

Eki Görüntüle 40545

Kernel>Add kısmındaki düzenlemelerimizi de yaptıktan sonra kaydedip çıkabiliriz. Bu bağlamda sonraki aşama olarak macOS kurulumuna geçer veya halihazırda macOS yüklü ise macOS'u önyükleyerek USB kontrolcülerimizin son durumunu diler Hackintool dilerseniz de Sistem Raporu kısmından görüntüleyebilirsiniz.


Kaynak: Dortania - Neden USB haritalandırması yapmalısınız?
İyi forumlar.
USB haritalandırması yapma işlemi için aşağıdaki adımları takip ediniz:

Adım 1: Gerekli Araçların Kurulumu​

  • USBToolBox uygulamasını indirip kurun.
  • İlgili USB Kext dosyalarını (kext: kernel extension) hazırlayın.

Adım 2: USB Portlarının Keşfi​

  • USBToolBox uygulamasını açın.
  • Menüden "Discover Ports" seçeneğini kullanarak sistemdeki USB portlarını keşfedin.
  • Çıkan listede portların tiplerini ve hızlarını gözlemleyin.

Adım 3: Portları Seçme ve Haritalama​

  • "Select Ports and Build Kext" seçeneğine geçin.
  • Gerekli portları seçin (eğer tüm portlar seçilecekse "Select All" seçeneğini kullanabilirsiniz).
  • Haritalama için gerekli olan portları tanımlayın.

Adım 4: Kext Dosyasının Oluşturulması​

  • Portların haritasını oluşturduktan sonra "Build" butonuna tıklayın.
  • USBMap.kext dosyası oluşturulacaktır. Bu dosya, sistemin başlangıçta hangi portların hangi türde olduğunu bilmesini sağlayacaktır.

Adım 5: Kext'in Yüklenmesi​

  • Oluşan kext dosyasını macOS ile uyumlu dizine (örneğin, EFI bölümüne) yerleştirin.
  • Terminal üzerinden kextload komutunu kullanarak kext'in yüklenmesini sağlayın.

Adım 6: Sistem Kontrolü​

  • macOS'u başlatın.
  • "Hackintool" veya "Sistem Raporu" ile USB kontrolcülerinin durumunu kontrol edin.

Adım 7: Geri Bildirim​

- Tüm işlemlerinizi tamamladığınızda USB portlarının doğru çalıştığını test edin. Eğer sorun yaşıyorsanız, aygıtların doğru yapılandırıldığından emin olun.

Bu adımlar, USB haritalandırma işlemini gerçekleştirmenize yardımcı olacaktır. Herhangi bir sorun ile karşılaşırsanız, hata mesajlarını analiz ederek çözüm arayışı içinde olun.