Google is committed to advancing racial equity for Black communities. See how.
Bu sayfa, Cloud Translation API ile çevrilmiştir.
Switch to English

USB Dijital Ses

Bu makale, USB dijital ses ve ilgili USB tabanlı protokoller için Android desteğini gözden geçirmektedir.

Seyirci

Bu makalenin hedef kitlesi, Android cihaz OEM'leri, SoC satıcıları, USB ses çevre birimi tedarikçileri, gelişmiş ses uygulama geliştiricileri ve Android'deki USB dijital ses dahili özelliklerini ayrıntılı olarak anlamak isteyen diğer kişilerdir.

Nexus cihazlarının son kullanıcıları, bunun yerine Nexus Yardım Merkezi'nde USB ana makine modunu kullanarak ses kaydetme ve çalma başlıklı makaleye bakmalıdır. Bu makale son kullanıcılara yönelik olmasa da, bazı odyofil tüketicileri ilgi alanlarını bulabilir.

USB'ye Genel Bakış

Universal Serial Bus (USB) gayrı Wikipedia makalesi açıklanan USB ve resmen tarafından yayınlanan standartlar tarafından tanımlanır USB Implementers Forum, Inc . Kolaylık sağlamak için, burada temel USB konseptlerini özetliyoruz, ancak standartlar yetkili referanstır.

Temel kavramlar ve terminoloji

USB bir olan otobüs konak denilen veri aktarım işlemlerinin tek bir başlatıcı ile. Ana bilgisayar, veri yolu aracılığıyla çevre birimlerle iletişim kurar.

Not: Aygıt ve aksesuar terimleri, çevre birimlerinin ortak eşanlamlılarıdır. Android cihaz veya aksesuar modu adı verilen Android'e özgü konsept ile karıştırılabilecekleri için burada bu terimlerden kaçınıyoruz.

Önemli bir ana bilgisayar rolü numaralandırmadır : hangi çevre birimlerinin veri yoluna bağlı olduğunu algılama ve tanımlayıcılar aracılığıyla ifade edilen özelliklerini sorgulama süreci.

Bir çevre birimi, tek bir fiziksel nesne olabilir, ancak aslında birden çok mantıksal işlevi gerçekleştirebilir . Örneğin, bir web kamerası çevre birimi hem kamera işlevine hem de mikrofon ses işlevine sahip olabilir.

Her çevresel işlevin, bu işlevle iletişim kurmak için protokolü tanımlayan bir arabirimi vardır.

Ana bilgisayar, bir çevre biriminin işlevlerinden biri tarafından sağlanan bir uç noktaya , bir veri kaynağına veya havuza bir boru üzerinden bir çevre birimiyle iletişim kurar.

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

Ana bilgisayar tüm veri aktarımlarını başlatır, bu nedenle giriş ve çıkış terimleri ana bilgisayara göre ifade edilir. Bir giriş işlemi, verileri çevre birimden ana bilgisayara aktarırken, bir çıkış işlemi verileri ana bilgisayardan çevre birimine aktarır.

Üç ana veri aktarım modu vardır: kesme , toplu ve eşzamanlı . Eşzamanlı mod, ses bağlamında daha ayrıntılı tartışılacaktır.

Çevresel birim, çevrenin kendisinin ötesinde dış dünyaya bağlanan terminallere sahip olabilir. Bu şekilde, çevre birimi USB protokolü ve "gerçek dünya" sinyalleri arasında çeviri yapmaya yarar. Terminaller, fonksiyonun mantıksal nesneleridir.

Android USB modları

Geliştirme Modu

Geliştirme modu , Android'in ilk sürümünden beri mevcuttur. Android cihaz, Linux, Mac OS X veya Windows gibi bir masaüstü işletim sistemini çalıştıran bir ana bilgisayara bir USB çevre birimi olarak görünür. Görünür tek çevre birimi işlevi ya Android fastboot ya da Android Debug Bridge'dir (adb) . Fastboot ve adb protokolleri, USB toplu veri aktarım modu üzerinde katmanlanır.

Ana bilgisayar modu

Ana bilgisayar modu Android 3.1'de (API seviyesi 12) tanıtıldı.

Android cihazının ana bilgisayar olarak davranması gerektiğinden ve çoğu Android cihazda, ana bilgisayar işlemine doğrudan izin vermeyen bir mikro USB konektörü bulunduğundan, genellikle bunun gibi bir hareket halinde ( OTG ) adaptör gereklidir:

OTG

Şekil 1. Hareket halindeyken (OTG) adaptör

Bir Android cihaz, çevre biriminin ne kadar güce ihtiyaç duyduğuna ve Android aygıtın ne kadar güç sağlayabildiğine bağlı olarak belirli bir çevre birimini çalıştırmak için yeterli gücü sağlamayabilir. Yeterli güç mevcut olsa bile, Android cihaz pil şarjı önemli ölçüde kısalabilir. Bu durumlar için aşağıdaki gibi güçlendirilmiş bir hub kullanın:

Güçlendirilmiş hub

Şekil 2. Elektrikli hub

Aksesuar modu

Aksesuar modu Android 3.1'de (API seviyesi 12) tanıtıldı ve Android 2.3.4'e geri yüklendi. Bu modda, Android cihaz, ana bilgisayar olarak hizmet veren bir yuva gibi başka bir cihazın kontrolü altında bir USB çevre birimi olarak çalışır. Geliştirme modu ile aksesuar modu arasındaki fark, ek USB işlevlerinin adb dışında ana bilgisayar tarafından görülebilmesidir. Android cihaz geliştirme modunda başlar ve ardından yeniden görüşme süreciyle aksesuar moduna geçer.

Aksesuar modu, Android 4.1'deki ek özelliklerle, özellikle aşağıda açıklanan sesle genişletildi.

USB ses

USB sınıfları

Her çevre birimi işlevinin, o işlev için standart protokolü belirten ilişkili bir aygıt sınıfı belgesi vardır. Bu, sınıfa uyumlu ana bilgisayarların ve çevresel işlevlerin, birbirlerinin işleyişi hakkında ayrıntılı bilgi olmadan birlikte çalışmasını sağlar. Ana bilgisayar ve çevre birimi farklı varlıklar tarafından sağlandıysa sınıf uyumluluğu kritiktir.

Sürücüsüz terimi, işletim sistemine özel bir sürücünün kurulmasına gerek kalmadan bu tür bir çevre biriminin standart özelliklerini kullanmanın mümkün olduğunu belirten, sınıf uyumlu ile ortak bir eşanlamlıdır. Başlıca masaüstü işletim sistemleri için "sürücüye gerek yok" olarak ilan edilen bir çevre biriminin, istisnalar olsa da sınıf uyumlu olacağı varsayılabilir.

USB ses sınıfı

Burada sadece ses işlevlerini uygulayan çevre birimleriyle ilgileniyoruz ve bu nedenle ses cihazı sınıfına bağlı kalıyoruz. USB ses sınıfı spesifikasyonunun iki sürümü vardır: sınıf 1 (UAC1) ve 2 (UAC2).

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

USB, bazıları ses sınıfıyla karıştırılabilecek birçok başka aygıt sınıfını içerir. Kitle depolama sınıfı (MSC), medyaya sektör odaklı erişim için kullanılırken, Medya Aktarım Protokolü (MTP) medyaya tam dosya erişimi içindir. Ses dosyalarını aktarmak için hem MSC hem de MTP kullanılabilir, ancak yalnızca USB ses sınıfı gerçek zamanlı akış için uygundur.

Ses terminalleri

Bir ses çevre biriminin terminalleri tipik olarak analogdur. Çevre birimin giriş terminalinde sunulan analog sinyal, analogdan dijitale dönüştürücü (ADC) ile dijitale dönüştürülür ve ana bilgisayar tarafından tüketilmek üzere USB protokolü üzerinden taşınır. ADC, ana bilgisayar için bir veri kaynağıdır . Benzer şekilde, ana bilgisayar çevre birimine USB protokolü üzerinden bir dijital ses sinyali gönderir; burada dijitalden analoğa dönüştürücü (DAC) dönüştürülür ve bir analog çıkış terminaline sunulur. DAC, ana bilgisayar için bir havuzdur .

Kanallar

Ses işlevi olan bir çevre birimi, bir kaynak terminali, lavabo terminali veya her ikisini birden içerebilir. Her yönde bir kanal ( mono ), iki kanal ( stereo ) veya daha fazlası olabilir. İkiden fazla kanala sahip çevre birimlerine çok kanallı denir. Bir stereo akışının sol ve sağ kanallardan oluştuğu şeklinde yorumlanması ve uzantı olarak çok kanallı bir akışı her kanala karşılık gelen uzamsal konumlara sahip olarak yorumlanması yaygındır. Bununla birlikte, her kanala belirli bir standart uzamsal anlam atamamak da oldukça uygundur (özellikle HDMI'dan çok USB ses için). Bu durumda, her bir kanalın nasıl kullanılacağını tanımlamak uygulamaya ve kullanıcıya bağlıdır. Örneğin, dört kanallı bir USB giriş akışı, bir oda içindeki çeşitli mikrofonlara bağlı ilk üç kanalı ve bir AM radyodan giriş alan son kanalı içerebilir.

Eşzamanlı aktarım modu

USB ses, hata giderme pahasına gerçek zamanlı özellikleri için eşzamanlı aktarım modunu kullanır. Eşzamanlı modda, bant genişliği garanti edilir ve veri aktarım hataları, döngüsel artıklık denetimi (CRC) kullanılarak tespit edilir. Ancak hata durumunda paket onayı veya yeniden iletim yoktur.

Eşzamanlı iletimler her Çerçeve Başlangıcı (SOF) döneminde gerçekleşir. SOF periyodu, tam hız için bir milisaniye ve yüksek hız için 125 mikrosaniyedir. Her tam hızlı çerçeve 1023 bayta kadar yük taşır ve yüksek hızlı bir çerçeve 1024 bayta kadar taşır. Bunları bir araya getirerek, maksimum aktarım hızını saniyede 1.023.000 veya 8.192.000 bayt olarak hesaplıyoruz. Bu, birleşik ses örnekleme hızı, kanal sayısı ve bit derinliği üzerinde teorik bir üst sınır belirler. Pratik sınır daha düşüktür.

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

  • Uyarlanabilir
  • Eşzamansız
  • Senkron

Uyarlanabilir alt-modda, çevresel havuz veya kaynak, ana bilgisayarın potansiyel olarak değişen bir örnek hızına uyum sağlar.

Eşzamansız (örtük geri bildirim olarak da adlandırılır) alt modunda, havuz veya kaynak örnek oranını belirler ve ana bilgisayar uyum sağlar. Eşzamansız alt modun birincil teorik avantajı, kaynak veya alıcı USB saatinin fiziksel ve elektriksel olarak DAC veya ADC'yi çalıştıran saate daha yakın (ve aslında aynı veya ondan türetilmiş) olmasıdır. Bu yakınlık, asenkron alt modun saat seğirmesine daha az duyarlı olması gerektiği anlamına gelir. Ek olarak, DAC veya ADC tarafından kullanılan saat, ana bilgisayar saatinden daha yüksek doğruluk ve daha düşük sapma için tasarlanabilir.

Senkronize alt modda, her SOF periyodunda sabit sayıda bayt aktarılır. Ses örnekleme hızı, USB saatinden etkili bir şekilde türetilir. Senkronize alt mod, ses ile yaygın olarak kullanılmaz çünkü hem ana bilgisayar hem de çevre birimi USB saatinin insafına kalmıştır.

Aşağıdaki tablo eşzamanlı alt modları özetlemektedir:

Alt mod Bayt sayısı
paket başına
Aynı oran
tarafından karar verildi
Ses için kullanılır
uyarlanabilir değişken ev sahibi Evet
asenkron değişken Çevresel Evet
senkron sabit USB saati Hayır

Pratikte, alt mod elbette önemlidir, ancak diğer faktörler de dikkate alınmalıdır.

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

Geliştirme Modu

Geliştirme modunda USB ses desteklenmez.

Ana bilgisayar modu

Android 5.0 (API seviyesi 21) ve üzeri, USB ses sınıfı 1 (UAC1) özelliklerinin bir alt kümesini destekler:

  • Android cihaz, ana bilgisayar olarak davranmalıdır
  • Ses formatı PCM (arayüz tipi I) olmalıdır
  • Bit derinliği 16 bit, 24 bit veya 32 bit olmalıdır; burada 24 bit yararlı ses verisi 32 bit sözcüğün en önemli bitleri içinde sola yaslanmıştır
  • Örnek oranı 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çeve kaynak kodunun incelenmesi, bu özellikleri desteklemek için gereken minimumun ötesinde ek kod gösterebilir. Ancak bu kod doğrulanmadı, bu nedenle daha gelişmiş özellikler henüz talep edilmedi.

Aksesuar modu

Android 4.1 (API seviyesi 16), ana bilgisayara ses çalma için sınırlı destek ekledi. Aksesuar modundayken Android, ses çıkışını otomatik olarak USB'ye yönlendirir. Yani, Android cihaz, örneğin bir yuva gibi ana bilgisayara bir veri kaynağı olarak hizmet eder.

Aksesuar modu sesi şu özelliklere sahiptir:

  • Android cihaz, önce Android cihazını geliştirme modundan aksesuar moduna geçirebilen bilgili bir ana bilgisayar tarafından kontrol edilmeli ve ardından ana bilgisayar ses verilerini uygun uç noktadan aktarmalıdır. Böylece, Android cihaz ana bilgisayara "sürücüsüz" görünmez.
  • Yönü giriş, konakçıya göre ifade olmalıdır
  • Ses formatı 16 bit PCM olmalıdır
  • Örnekleme 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 önerilmemektedir.

USB dijital ses uygulamaları

Adından da anlaşılacağı gibi, USB dijital ses sinyali, ortak TRS mini kulaklık konektörü tarafından kullanılan analog sinyalden ziyade bir dijital veri akışı ile temsil edilir. Sonuç olarak, herhangi bir dijital sinyalin duyulmadan önce analoga dönüştürülmesi gerekir. Bu dönüşümün nereye yerleştirileceğini seçmede bazı ödünler var.

İki DAC'nin hikayesi

Aşağıdaki örnek diyagramda iki tasarımı karşılaştırıyoruz. İlk olarak, Uygulama İşlemcisi (AP), yerleşik DAC, amplifikatör ve kulaklıklara takılı analog TRS konektörü olan bir mobil cihazımız var. Ayrıca, USB harici USB DAC'a bağlı bir mobil cihaz ve amplifikatöre, ayrıca kulaklıklı olarak da düşünüyoruz.

DAC karşılaştırması

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

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

Not: Bu yapay bir karşılaştırmadır, çünkü gerçek bir Android cihaz muhtemelen her iki seçeneğe de sahip olacaktır.

İlk A tasarımı daha basittir, daha ucuzdur, daha az güç kullanır ve bileşenlerin eşit derecede güvenilir olduğu varsayılarak daha güvenilir bir tasarım olacaktır. Ancak, diğer gereksinimlere karşı genellikle ses kalitesi ödünleşmeleri vardır. Örneğin, eğer bu bir kitlesel pazar cihazı ise, audiophile için değil, genel tüketicinin ihtiyaçlarına uyacak şekilde tasarlanabilir.

İkinci tasarımda, harici ses çevre birimi C, temel kitle pazarı Android cihazı B'nin maliyetini etkilemeden daha yüksek ses kalitesi ve daha fazla güç çıkışı için tasarlanabilir.Evet, daha pahalı bir tasarımdır, ancak maliyet yalnızca aşağıdakiler tarafından karşılanmaktadır: isteyenler.

Mobil cihazlar, yüksek yoğunluklu devre kartlarına sahip olmalarıyla ünlüdür ve bu, bitişik analog sinyalleri bozan karışma için daha fazla fırsatla sonuçlanabilir. Dijital iletişim gürültüye karşı daha az hassastır, bu nedenle DAC'yi Android cihaz A'dan harici bir devre kartı C'ye taşımak, son analog aşamaların yoğun ve gürültülü devre kartından fiziksel ve elektriksel olarak izole edilmesini sağlayarak daha yüksek kaliteli ses elde edilmesini sağlar.

Öte yandan, ikinci tasarım daha karmaşıktır ve ek karmaşıklık ile işlerin başarısız olması için daha fazla fırsat doğar. USB denetleyicilerinden de ek gecikme vardır.

Ana bilgisayar modu uygulamaları

Tipik USB ana bilgisayar modu 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 ses çevre birimi algılar ve ses ilkesi kurallarına göre ses çalma ve yakalama işlemini otomatik olarak yönlendirir. Stereo içerik, çevre birimin ilk iki kanalında oynatılır.

USB dijital sese özgü API'ler yoktur. Gelişmiş kullanım için, otomatik yönlendirme, USB'ye duyarlı uygulamalarla etkileşime girebilir. Bu tür uygulamalar için, Ayarlar / Geliştirici Seçenekleri'nin Medya bölümündeki ilgili kontrol aracılığıyla otomatik yönlendirmeyi devre dışı bırakın.

Ana bilgisayar modundayken hata ayıklama

USB ana bilgisayar modundayken, USB üzerinden adb hata ayıklaması yapılamaz. Bir alternatif için Android Hata Ayıklama Köprüsü'nün Kablosuz kullanımı bölümüne bakın.

USB sesi uygulama

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

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

  • ses sınıfı uyumluluğu için tasarım; şu anda Android 1. sınıfı hedefliyor, ancak 2. sınıf için plan yapmak akıllıca olacaktır
  • tuhaflıklardan kaçının
  • Referans ve popüler Android cihazlarla birlikte çalışabilirliği test edin
  • Tüketicilerin bilinçli kararlar verebilmesi için desteklenen özellikleri, ses sınıfı uyumluluğunu, güç gereksinimlerini vb.

Android cihaz OEM'leri ve SoC satıcıları için öneriler

USB dijital sesi desteklemek için, cihaz OEM'leri ve SoC satıcıları şunları yapmalıdır:

  • USB ana bilgisayar modunu desteklemek için donanım tasarlayın
  • android.hardware.usb.host.xml özellik bayrağı aracılığıyla çerçeve düzeyinde genel USB ana bilgisayar desteğini etkinleştirin
  • gerekli tüm çekirdek özelliklerini etkinleştirin: USB ana bilgisayar modu, USB ses, eşzamanlı aktarım modu; Android Kernel Yapılandırmasına bakın
  • son çekirdek sürümleri ve yamaları ile güncel kalın; Sınıf uyumluluğunun asil hedefine rağmen, tuhaflıkları olan mevcut ses çevre birimleri var ve yeni çekirdekler bu tür tuhaflıklar için geçici çözümler içeriyor
  • USB ses politikasını aşağıda açıklandığı gibi etkinleştirin
  • device.mk'deki PRODUCT_PACKAGES'a audio.usb.default ekleyin
  • Yaygın USB ses çevre birimleriyle birlikte çalışabilirliği test edin

USB ses politikası nasıl etkinleştirilir

USB sesini etkinleştirmek için, ses ilkesi yapılandırma dosyasına bir giriş ekleyin. Bu genellikle şurada bulunur:

device/oem/codename/audio_policy.conf

Yol adı bileşeni "oem", Android cihazı üreten OEM'in adıyla değiştirilmeli ve "kod adı", cihaz kod adıyla değiştirilmelidir.

Burada örnek bir giriş gösterilmektedir:

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

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

hardware/libhardware/modules/usbaudio/

USB audio HAL, ağırlıklı olarak Audio Terminology'de açıklanan tinyalsa'ya dayanır. USB ses eşzamanlı aktarımlara dayansa da, bu ALSA uygulaması tarafından soyutlanmıştır. Dolayısıyla, USB audio HAL ve tinyalsa'nın USB protokolünün bu bölümü ile ilgilenmesine gerek yoktur.

USB sesini test etme

USB ses için CTS testi hakkında bilgi için bkz. USB Audio CTS Doğrulayıcı Testleri .