USB dijital ses

Bu makalede, USB dijital ses ve diğer cihazlar için Android desteği incelenmektedir. USB tabanlı protokoller.

Kitle

Bu makalenin hedef kitlesi Android cihaz OEM'leri, SoC tedarikçileri, USB ses çevre birimi tedarikçileri, gelişmiş ses uygulaması geliştiriciler, ve Android'deki USB dijital ses dahili öğelerini ayrıntılı olarak anlamak isteyen diğer kullanıcılar.

Nexus cihazların son kullanıcıları makaleyi incelemelidir USB ana makine modunu kullanarak ses kaydetme ve oynatma CANNOT TRANSLATE Bunun yerine Nexus Yardım Merkezi'ni ziyaret edin. Bu makale son kullanıcılara yönelik olmasa da bazı ses tutkunu tüketiciler ilgi alanlarını bulabilir.

USB'ye genel bakış

Evrensel Seri Yol (USB), Wikipedia makalesinde resmi olmayan bir şekilde açıklanmaktadır USB, tarafından yayınlanan standartlarla resmen tanımlanmıştır. USB Implementers Forum, Inc. Kolaylık sağlaması açısından, USB ile ilgili temel kavramları burada özetledik. standartlar da güvenilir referanstır.

Temel kavramlar ve terminoloji

USB bir otobüstür Bu işlem, veri aktarımı işlemlerini ana makine adı verilen tek bir başlatıcıyla başlatır. Ana makine, çevre birimlerini kullanıyor.

Not: Cihaz ve aksesuar terimleri genellikle çevre birimi hakkında daha fazla bilgi edinin. Karıştırılma olasılığından dolayı burada bu terimleri kullanmaktan kaçınıyoruz Android cihaz veya Android'e özgü bir kavram olan aksesuar modundan erişebilirsiniz.

Numaralandırma, kritik ana makine rollerinden biridir: otobüse bağlı çevre birimlerini tespit etme süreci ve açıklayıcılar aracılığıyla ifade edilen özelliklerini sorgulayın.

Çevre birimi tek bir fiziksel nesne olabilir Ancak birden fazla mantıksal işlev uygulayabilir. Örneğin, bir web kamerası çevre biriminde hem kamera işlevi hem de mikrofon ses işlevine dokunun.

Her çevre birimi işlevinin belirli bir arayüzü vardır bu işlevle iletişim kuracak protokolü tanımlar.

Ana makine, bir çevre birimiyle iletişim kurar. dikey çizgi uç noktaya bir veri kaynağı veya havuz çevre biriminin işlevlerinden biri tarafından sağlanır.

İki tür dikey çizgi vardır: mesaj ve akış. İki yönlü kontrol ve durum için mesaj hattı kullanılır. Tek yönlü veri aktarımında ise akış borusu kullanılır.

Tüm veri aktarımlarını ana makine Bu nedenle giriş ve çıkış terimleri ana makineye göre ifade edilir. Bir giriş işlemi, verileri çevre biriminden ana makineye aktarır. çıkış işlemi, ana makineden çevre birimine veri aktarır.

Üç ana veri aktarım modu vardır: interrupt, Batch ve isochronous. İkizon modu, ses bağlamında daha ayrıntılı olarak ele alınacaktır.

Çevre biriminde dış dünyaya bağlanan terminaller olabilir, çok daha fazlasını yapar. Bu şekilde çevre birimi USB protokolü ve "gerçek dünya" arasında çeviri yapma sinyallerine geçiş yapacaktır. Terminaller, işlevin mantıksal nesneleridir.

Android USB modları

Geliştirme modu

Geliştirme modu, Android'in ilk sürümünden bu yana kullanımdadır. Android cihaz, USB çevre birimi olarak görünür. veya Linux gibi masaüstü işletim sistemi çalıştıran bir ana bilgisayar Mac OS X veya Windows. Görünür tek çevre birimi işlevi Android hızlı başlatma veya Android Debug Bridge (adb). Fastboot ve adb protokolleri, USB toplu veri aktarım modunda katmanlı olarak yer alır.

Barındırıcı modu

Ana makine modu, Android 3.1'de (API düzeyi 12) kullanıma sunulmuştur.

Android cihazın ana makine olarak çalışması gerekir ve çoğu Android cihaz Doğrudan ana makine çalışmasına izin vermeyen bir mikro USB konnektörü, mobil kullanım amaçlı (OTG) adaptör şunun gibi genellikle gereklidir:

OTG

Şekil 1. Hareket Halinde (OTG) adaptörü

Android cihaz, bir cihazı çalıştırmak için yeterli güç sağlamayabilir. ne kadar güce ihtiyaç duyduğuna bağlı olarak belirli bir çevre biriminin ve Android cihazın ne kadar sağlama kapasitesine sahip olduğu. Hatta yeterli güç varsa Android cihazın pil şarjı kısaltılır. Bu durumlarda, hub'ı aşağıdaki gibi kullanın:

Elektrikli göbek

Şekil 2. Elektrikli göbek

Aksesuar modu

Aksesuar modu, Android 3.1 (API düzeyi 12) sürümünde kullanıma sunulmuş ve Android 2.3.4'e geri bağlantılandırılmıştır. Android cihaz bu modda bir USB çevre birimi olarak çalışır. ana makine olarak işlev gören bir yuva gibi başka bir cihazın kontrolü altında olması gerekir. Geliştirme modu ile aksesuar modu arasındaki fark ek USB işlevlerinin adb dışında ana makine tarafından görülebilmesidir. Android cihaz, geliştirme modunda başlatılır ve ardından geçiş yapması için yeniden pazarlık yapılması gerekir.

Aksesuar modu, Android 4.1'deki ek özelliklerle genişletildi. aşağıda açıklanan diğer sesleri kullanın.

USB ses

USB sınıfları

Her çevre birimi işlevinin ilişkili bir cihaz sınıfı dokümanı vardır standart protokolü belirtir. Bu işlem, sınıfla uyumlu ana makineleri ve çevre birimi işlevlerini etkinleştirir. birbirlerinin çalışmaları hakkında ayrıntılı bilgi sahibi olmadan birlikte çalışmak. Ana makine ve çevre birimi, Google tarafından sağlanan olanak tanır.

Sürücüsüz terimi, sınıf uyumlu ile eş anlamlıdır; Bu da böyle bir çalışmanın standart özelliklerini kullanmanın mümkün olduğunu, işletim sistemine özel bir işlem gerektirmeden çevre birimi sürücü yüklenir. Bir çevre biriminin "sürücüye ihtiyacı yok" şeklinde tanıtıldığı varsayılabilir büyük masaüstü işletim sistemleri için sınıfla uyumlu olacaktır ancak istisnalar olabilir.

USB ses sınıfı

Burada yalnızca bu cihazları kullanan çevre birimleri ve ses sistemi sınıfına uyması gerekir. İki tür USB ses sınıfı spesifikasyonunun sürümleri: sınıf 1 (UAC1) ve 2 (UAC2).

Diğer sınıflarla karşılaştırma

USB, bazıları karıştırılabilecek diğer birçok cihaz sınıfını içerir düzenlemenizi sağlar. İlgili içeriği oluşturmak için kullanılan toplu depolama sınıfı (MSC) ise sektöre yönelik erişimi artırırken Medya Aktarım Protokolü (MTP), medyalara tam dosya erişimi içindir. Ses dosyalarının aktarımı için hem MSC hem de MTP kullanılabilir, ancak gerçek zamanlı akış için yalnızca USB ses sınıfı uygundur.

Ses terminalleri

Ses çevre biriminin terminalleri genellikle analogdur. Çevre biriminin giriş terminalinde sunulan analog sinyal, analog-dijital dönüştürücü (ADC), ve Google'ın API'si ile kullanılacak USB protokolü üzerinden bu bilgilerden faydalanabilirsiniz. ADC bir veri kaynağı seçin. Benzer şekilde, barındırıcı dijital ses sinyalini kullanır. Burada bir dijitalden analog dönüştürücü (DAC) dönüştürüp analog bir çıkış terminaline sunar. DAC, ana makine için bir havuz'dur.

Kanallar

Ses işlevine sahip bir çevre birimi; kaynak terminali, havuz terminali veya her ikisini içerebilir. Her yönün bir kanalı (mono), iki kanalı olabilir (stereo) veya daha fazla. İkiden fazla kanala sahip çevre birimlerine çok kanallı denir. Stereo akışın yapısında genellikle sol ve sağ kanalları ve buna bağlı olarak çok kanallı bir akışı her bir kanala karşılık gelen uzamsal konumlar. Ancak aynı zamanda oldukça uygun (özellikle de USB ses için HDMI) belli bir görev için standart bir uzamsal anlam ifade eder. Bu durumda, Yeşil Ofis her bir kanalın nasıl kullanıldığını tanımlamak için uygulama ve kullanıcı ekleyin. Örneğin, dört kanallı bir USB giriş akışında ilk üçü mikrofonlara bağlı kanalları ve son ses kanal, AM radyodan giriş alıyor.

İki kronik aktarım modu

USB ses, gerçek zamanlı özellikleri için eş zamanlı aktarım modunu kullanır. ortaya çıkarır. Eşzamanlı modda, bant genişliği garanti edilir ve veri iletimi döngüsel artıklık kontrolü (CRC) kullanılarak belirlenir. Ancak mevcut hata durumunda paket onayı veya yeniden iletimi yapılmaz.

Her Kare Başlangıcı (SOF) döneminde iki kronik iletimler gerçekleşir. SOF süresi, tam hız için bir milisaniye, tam hız için 125 mikrosaniyedir. size yardımcı olabilir. Her bir tam hızlı çerçeve 1.023 bayt'a kadar yük taşır. ve yüksek hızlı bir çerçeve 1024 bayta kadar veri taşır. Bunları bir araya getirerek maksimum aktarım hızını 1.023.000 veya 8.192.000 bayt olarak hesaplarız / saniye başına Bu, birleşik ses için teorik bir üst sınır belirler örnek hızı, kanal sayısı ve bit derinliği gibi. Pratik sınır daha düşüktür.

Eşzamanlı modda üç alt mod vardır:

  • Uyarlanan
  • Eşzamansız
  • Eşzamanlı

Uyarlanabilir alt modda, çevre birimi havuzu veya kaynak, potansiyel olarak değişen örnek hızına uyum sağlar belirler.

Eşzamansız (örtülü geri bildirim de denir) alt modda, Örnek hızı havuz veya kaynak tarafından belirlenir. Ana makine de örnek hızı dikkate alır. Eşzamansız alt modun birincil teorik avantajı, fiziksel ve elektriksel olarak daha yakın (ve hatta bazen saatle aynı veya bundan türetilmiş olmalıdır. Bu yakınlık, eşzamansız alt modun daha az duyarlı olacağı anlamına gelir. ses dalgalanmasına neden olur. Ayrıca, DAC veya ADC tarafından kullanılan saat ana makine saatinden daha yüksek doğruluk ve daha düşük kayma için tasarlanmıştır.

Eşzamanlı alt modda her SOF döneminde sabit sayıda bayt aktarılır. Ses örnek hızı, USB saatinden etkili bir şekilde elde edilir. Eşzamanlı alt mod, hem ses hem de USB saatinden bağımsız olarak ana makine ve çevre birimi tarafından kullanılıyor.

Aşağıdaki tabloda iki kronik alt modlar özetlenmiştir:

Alt mod Paket başına
bayt sayısı
Örnek hızı şuna göre belirlenir:
Ses için kullanılır
uyarlanabilir değişken düzenleyen : canlı yayın sahibi : sunucu evet
eşzamansız değişken çevre birimi evet
eşzamanlı sabit USB saat hayır

Uygulamada alt mod elbette önemlidir ancak dikkate alınması gerekir.

USB ses sınıfı için Android desteği

Geliştirme modu

USB ses, geliştirme modunda desteklenmiyor.

Barındırıcı modu

Android 5.0 (API düzeyi 21) ve sonraki sürümler, USB ses sınıfı 1 (UAC1) özelliklerinin bir alt kümesini destekler:

  • Android cihaz, ana makine olarak işlem yapmalıdır
  • Ses biçimi PCM (arayüz türü I) olmalıdır
  • Bit derinliği 16 bit, 24 bit veya 32 bit olmalıdır; 24 bit yararlı ses verisi, en önemli bölümde yaslanmış 32 bitlik kelimenin bitleri
  • Örnek hızı 48, 44,1, 32, 24, 22,05, 16, 12, 11,025 veya 8 kHz olmalıdır
  • Kanal sayısı 1 (mono) veya 2 (stereo) olmalıdır

Android çerçevesi kaynak kodu Perusal'da ek kod gösterilebilir destekleyebilecekleri sınırlı bir sınır olarak karşı karşıyayız. Ancak bu kod doğrulanmadı. Bu nedenle, daha ileri seviye özelliklerle ilgili henüz hak talebinde bulunulmadı.

Aksesuar modu

Android 4.1 (API düzeyi 16), ana makineye ses çalma için sınırlı destek ekledi. Android, aksesuar modundayken ses çıkışını otomatik olarak USB'ye yönlendirir. Yani Android cihaz, ana makineye bir veri kaynağı (ör. yuva) görevi görür.

Aksesuar modunda ses şu özelliklere sahiptir:

  • Android cihaz, aşağıdakileri yapan bilgili bir ana makine tarafından kontrol edilmelidir. önce Android cihazı geliştirme modundan aksesuar moduna geçirebilir, Ardından ana makinenin uygun uç noktadan ses verilerini aktarması gerekir. Dolayısıyla, Android cihaz "sürücüsüz" olarak görünmez. gönderir.
  • Yön, ana makineye göre ifade edilen giriş olmalıdır.
  • Ses biçimi 16 bit PCM olmalıdır
  • Örnek hızı 44,1 kHz olmalıdır
  • Kanal sayısı 2 (stereo) olmalıdır

Aksesuar modu sesi yaygın olarak benimsenmemiştir. ve şu anda yeni tasarımlar için önerilmez.

USB dijital ses uygulamaları

Adından da anlaşılacağı gibi, USB dijital ses sinyali temsil edilir. dijital veri akışı tarafından analog yerine ortak TRS mininin kullandığı sinyal mikrofonlu kulaklık bağlayıcısı. Sonuç olarak, herhangi bir dijital sinyalin duyulabilmesi için önce analog sinyale dönüştürülmesi gerekir. Bu dönüşümün nereye yerleştirileceğini seçmede bazı ödünler vardır.

İki DAC'nin öyküsü

Aşağıdaki örnek diyagramda iki tasarımı karşılaştırıyoruz. İlk olarak bir uygulama işlemcisi (AP), yerleşik DAC, amplifikatör ve ve analog TRS konnektörüne takıldı. Ayrıca, Harici USB DAC ve amplifikatöre bağlı USB'ye sahip mobil cihaz, kulaklıkla da yapabilirsiniz.

DAC karşılaştırması

Şekil 3. İki DAC'nin karşılaştırması

Hangi tasarım daha iyi? Bu sorunun cevabı, ihtiyaçlarınıza bağlıdır. Her birinin avantajları ve dezavantajları vardır.

Not: Bu yapay bir karşılaştırmadır. gerçek bir Android cihazda muhtemelen her iki seçenek de kullanılabilir.

A'nın ilk tasarımı daha basittir, daha ucuzdur, daha az güç kullanır, ve bileşenlerin de eşit derecede güvenilir olduğu varsayılır. Ancak, ses kalitesiyle ilgili diğer gerekliliklere kıyasla genellikle dengesizlikler vardır. Örneğin, bu büyük ölçekli bir pazar cihazıysa, için değil, genel tüketicinin gereksinimlerini karşılıyor.

İkinci tasarımda ise harici ses çevre birimi C, daha yüksek ses kalitesi ve daha fazla güç çıkışı sunar. temel kitle pazarına sahip Android cihaz B. Evet, daha pahalı bir tasarım. ama maliyet yalnızca bunu isteyenler tarafından karşılanıyor.

Mobil cihazlar, yayın yoğunluğu devre kartlarına yardımcı oluyor. Bu da ekip parazit sinyal Bitişik analog sinyalleri azaltan bir filtre. Dijital iletişim, 2024 yılında gürültü, Bu nedenle, DAC'yi Android cihaz A'dan harici bir devre kartına C son analog aşamaların fiziksel ve elektriksel olarak gerçekleşmesine izin verir yoğun ve gürültülü devre kartından izole ederek daha yüksek kaliteli ses sağlar.

Diğer yandan ikinci tasarım daha karmaşıktır ve artan karmaşıklık düzeyiyle birlikte fırsatlar yaratmalısınız. Ayrıca ek gecikme de USB denetleyicilerden geliyor.

Ana makine modu uygulamaları

USB ana makine modundaki ses uygulamaları şunları içerir:

  • müzik dinleme
  • telefon
  • anlık mesajlaşma ve sesli sohbet
  • kayıt

Android, tüm bu uygulamalar için uyumlu bir USB dijital cihaz algılar. ses çevre biriminin yanı sıra ses çalma ve ses kaydını otomatik olarak yönlendirir uygun şekilde değiştirebilirsiniz. Stereo içerik, çevre biriminin ilk iki kanalında oynatılır.

USB dijital sese özel API yoktur. Gelişmiş kullanım için otomatik yönlendirme, uygulamalarla çakışabilir cihazlardır. Bu tür uygulamalar için otomatik yönlendirmeyi devre dışı bırakın medya bölümündeki ilgili kontrol aracılığıyla Ayarlar / Geliştirici Seçenekleri.

Ana makine modundayken hata ayıkla

USB ana makine modundayken USB üzerinden adb hata ayıklaması yapılamaz. Kablosuz kullanımı bölümüne göz atın / Android Hata Ayıklama Köprüsü isteyebilirsiniz.

USB ses uygulama

Ses çevre birimi satıcıları için öneriler

Ses çevre birimi satıcıları, Android cihazlarla birlikte çalışmak için şunları yapmalıdır:

  • ses sınıfına uygunluk için tasarım; şu anda Android 1. sınıfı hedefliyor, ancak 2. sınıf için plan yapmak mantıklıdır
  • Quirkslerden kaçının
  • Referans ve popüler Android cihazlarla birlikte çalışabilirlik testi
  • desteklenen özellikleri, ses sınıfı uyumluluğunu, güç gereksinimlerini vb. açıkça belgeleyin. Böylece tüketiciler bilinçli kararlar verebilir

Android cihaz OEM'leri ve çip üzerinde sistem (SoC) tedarikçileri için öneriler

Cihaz OEM'leri ve SoC tedarikçileri, USB dijital sesi desteklemek için:

  • USB ana makine modunu destekleyecek donanım tasarlama
  • çerçeve düzeyinde genel USB ana makine desteğini etkinleştir android.hardware.usb.host.xml özellik bayrağı aracılığıyla
  • gereken tüm çekirdek özelliklerini etkinleştirin: USB ana makine modu, USB ses, iki kronik aktarım modu; Android Kernel Yapılandırması adlı makaleyi inceleyin
  • En son çekirdek sürümlerini ve yamalarını takip etmek; Sınıflara ve kurallara uygunluk gibi önemli bir hedef olmasına rağmen, günümüzde kullanılan ses çevre birimleri mevcuttur. Quirks ile ve son çekirdeklerin bu tür tuhaflıklar için geçici çözümleri var
  • USB ses politikasını aşağıda açıklandığı şekilde etkinleştirin
  • device.mk'de audio.usb.default'u PRODUCT_PACKAGES uygulamasına ekle
  • Ortak USB ses çevre birimleriyle birlikte çalışabilirlik testi

USB ses politikasını etkinleştir

USB sesi etkinleştirmek için ses politikası yapılandırma dosyası. Bu genelde şu adreste bulabilirsiniz:

device/oem/codename/audio_policy.conf

"oem" yol adı bileşeni ile değiştirilmelidir. Android cihazı üreten OEM'nin ve "kod adı" cihazın kod adıyla değiştirin.

Aşağıda örnek bir giriş gösterilmiştir:

audio_hw_modules {
  ...
  usb {
    outputs {
      usb_accessory {
        sampling_rates 44100
        channel_masks AUDIO_CHANNEL_OUT_STEREO
        formats AUDIO_FORMAT_PCM_16_BIT
        devices AUDIO_DEVICE_OUT_USB_ACCESSORY
      }
      usb_device {
        sampling_rates dynamic
        channel_masks dynamic
        formats dynamic
        devices AUDIO_DEVICE_OUT_USB_DEVICE
      }
    }
    inputs {
      usb_device {
        sampling_rates dynamic
        channel_masks AUDIO_CHANNEL_IN_STEREO
        formats AUDIO_FORMAT_PCM_16_BIT
        devices AUDIO_DEVICE_IN_USB_DEVICE
      }
    }
  }
  ...
}

Kaynak kodu

Ses Donanım Soyutlama Katmanı (HAL) USB ses uygulaması için:

hardware/libhardware/modules/usbaudio/

USB ses HAL'si büyük ölçüde tinyalsa, Ses terminolojisinde açıklanmaktadır. USB ses eş zamanlı aktarıma dayansa da bu, ALSA uygulaması ile soyutlanır. USB ses HAL ve tinyalsa için endişelenmenize gerek yoktur. bağlantı kurmalarını sağlar.

USB sesi test et

USB ses için CTS testi hakkında bilgi edinmek için USB Ses CTS Doğrulayıcı Testleri başlıklı makaleye bakın.