Jak modyfikować stosy Bluetooth w systemie Android, aby uzyskać znacznie lepszą jakość dźwięku Bluetooth



Wypróbuj Nasz Instrument Do Eliminowania Problemów

Ostrzeżenie: jest to bardzo zaawansowany przewodnik, który obejmuje modyfikowanie stosów Bluetooth w systemie Android - przeczytaj go w całości i postępuj zgodnie ze wszystkimi instrukcjami dokładnie tak, jak podano.



Pomimo faktu, że zestawy słuchawkowe Bluetooth i dźwięk Bluetooth stały się dość popularne, jest to pewien problem dla audiofilów, ponieważ udowodniono, że Bluetooth obniża jakość dźwięku, ponieważ fragmenty informacji audio i częstotliwości giną w powietrzu podczas przesyłania strumieniowego Bluetooth.



Dlatego niektórzy producenci wypuszczają kodeki aptX i LDAC, aby poprawić jakość dźwięku w porównaniu ze standardowym kodekiem Bluetooth SBC, który jest obsługiwany przez wszystkie słuchawki i większość urządzeń Bluetooth - jednak urządzenia z kodekami aptX i LDAC są znacznie droższe, ponieważ te kodeki wymagają opłat licencyjnych, które konsument płaci na dłuższą metę.



Niska jakość dźwięku kodeka SBC Bluetooth jest spowodowana sztucznymi ograniczeniami wszystkich obecnych stosów Bluetooth i konfiguracji słuchawek, a ograniczenie to można obejść na dowolnym istniejącym urządzeniu.

Jeśli interesuje Cię dźwięk przez Bluetooth, na końcu tego przewodnika pokażemy, jak wykonać zrzut dziennika dźwięku Bluetooth i sprawdzić go, aby zobaczyć, jaką jakość dźwięku i częstotliwość odbiera z odbiornika Bluetooth w Androidzie.

Większość tego przewodnika skupi się na kilku prostych poprawkach i sposobach odczytywania wyjścia audio Bluetooth, aby znacznie poprawić jakość wyjściową standardowych kodeków SBC Bluetooth - przeczytaj uważnie cały ten przewodnik, ponieważ jest on dość edukacyjny i jest wiele różnych rzeczy flashować lub dostosowywać, w zależności od modelu urządzenia.



Na końcu tego przewodnika znajduje się lista wstępnie załatanych stosów Bluetooth dla wielu popularnych urządzeń z Androidem - można je flashować podczas odzyskiwania, tak jak w przypadku każdego innego pliku .zip do flashowania - jeśli żadne z urządzeń nie należy do Ciebie, będziesz mieć postępować zgodnie z instrukcją modyfikowania stosów Bluetooth w systemie Android.

Krótkie informacje techniczne o kodeku SBC

SBC ma wiele różnych parametrów negocjowanych na etapie konfiguracji połączenia:

  • Typ i liczba kanałów audio: Joint Stereo, Stereo, Dual Channel, Mono;
  • Liczba pasm częstotliwości: 4 lub 8;
  • Liczba bloków audio w jednym pakiecie: 4, 8, 12, 16;
  • Algorytm alokacji bitów kwantyzacji: głośność, SNR;
  • Maksymalna i minimalna pula bitów używana w procesie kwantyzacji: zwykle 2-53.

Dekoder musi obsługiwać dowolną kombinację tych parametrów. Enkoder może implementować tylko część z nich.

Istniejące stosy Bluetooth zwykle negocjują następujący profil: Joint Stereo, 8 pasm, 16 bloków, Loudness, bitpool 2..53. Ten profil koduje dźwięk 44,1 kHz z przepływnością 328 kb / s.

Parametr Bitpool bezpośrednio wpływa na szybkość transmisji w tym samym profilu: im wyższa, tym wyższa szybkość transmisji, a tym samym jakość.

Jednak parametr bitpool nie jest powiązany z określonym profilem. Na szybkość transmisji znacząco wpływają również inne parametry: typ kanału audio, liczba pasm częstotliwości, liczba bloków audio. Szybkość transmisji można zwiększyć pośrednio, negocjując niestandardowe profile, bez zmiany puli bitów.

Na przykład funkcja Dual Channel koduje kanały oddzielnie, używając całej puli bitów dla każdego kanału. Zmuszenie urządzenia do korzystania z Dual Channel zamiast Joint Stereo da nam prawie podwojony bitrate przy tej samej maksymalnej puli bitów, 617 kbps.

Wydaje mi się, że bitpool powinien być zmienną wewnętrzną. Błąd projektowy specyfikacji A2DP polega na tym, że wartość puli bitów nie jest powiązana z innymi parametrami kodeka i jest definiowana tylko jako wartość globalna.

Te ustalone wartości Bitpool i Bitrate pochodzą z zalecanych wartości dla wysokiej jakości dźwięku. Ale rekomendacja nie jest wymówką, aby ograniczyć profil do tych wartości.

Specyfikacja A2DP w wersji 1.2, która była aktywna od 2007 do 2015 roku, wymaga, aby wszystkie dekodery działały poprawnie z przepływnością do 512 kb / s:

Dekoder SNK powinien obsługiwać wszystkie możliwe wartości puli bitów, które nie powodują przekroczenia maksymalnej przepływności. Ten profil ogranicza dostępną maksymalną przepływność do 320 kb / s dla trybu mono i 512 kb / s dla trybów dwukanałowych.

W nowej wersji specyfikacji nie ma ograniczenia przepływności. Zakłada się, że nowoczesne słuchawki wydane po 2015 roku mogą obsługiwać przepływności do 1000 kbps .

Z jakiegoś powodu wszystkie obecnie testowane stosy Bluetooth (Linux (PulseAudio), Android, Blackberry i macOS) mają sztuczne ograniczenia maksymalnego parametru bitpool, co bezpośrednio wpływa na maksymalny bitrate. Ale to nie jest największy problem, prawie wszystkie słuchawki ograniczają też maksymalną wartość bitpool do 53.

Większość urządzeń działa dobrze na zmodyfikowanym stosie Bluetooth z szybkością transmisji 507 kb / s, bez przerw i trzasków. Ale taka przepływność nigdy nie będzie negocjowana w normalnych warunkach, przy standardowych stosach Bluetooth.

*** Wymagane do testowania przy użyciu poniższych przewodników: test-dwukanałowy-bluetooth-ubuntu-18.04.1-desktop-amd64.iso.torrent

Jak testować na komputerze

Test zgodności słuchawek SBC o wysokiej przepływności jest najłatwiejszy do przeprowadzenia na komputerze z adapterem Bluetooth. Przygotowałem obraz Ubuntu ze zmodyfikowanym stosem Bluetooth, który można uruchomić jak na maszynie wirtualnej (podłączając adapter Bluetooth jako urządzenie USB wewnątrz maszyny wirtualnej, działa również z adapterami wbudowanymi w laptopy) lub uruchamiając z pamięć flash USB. Ten obraz wykorzystuje następujący profil: Podwójny kanał, 8 pasm, 16 bloków, Głośność, pula bitów 2..41, 44,1 kHz, co zapewnia przepływność 485 kb / s.

Działa na maszynie wirtualnej

  • Pobierz pakiet rozszerzeń Virtualbox i Virtualbox: https://www.virtualbox.org/wiki/Downloads;
  • Zainstaluj Virtualbox, uruchom go;
  • Zainstaluj pakiet rozszerzeń za pomocą opcji Plik → Preferencje → Rozszerzenia;
  • Utwórz nową maszynę wirtualną: Linux, Ubuntu (64-bit), 1024 RAM. Nie twórz dysku twardego.
  • Przejdź do ustawień maszyny wirtualnej, w Storage wybierz Kontroler: IDE, Opróżnij, naciśnij ikonę CD → Wybierz wirtualny plik dysku optycznego;
  • Wybierz pobrany test bluetooth-dualchannel-ubuntu-18.04.1-desktop-amd64.iso;
  • Zapisz i zamknij okno ustawień, uruchom maszynę wirtualną;
  • Kliknij prawym przyciskiem myszy ikonę kabla USB w prawym dolnym rogu, wybierz adapter Bluetooth;

Działa na PC

Obraz obsługuje uruchamianie BIOS / CSM i UEFI.

  • Nagraj obraz na dysk flash USB za pomocą Etchera: https://etcher.io/. Ta operacja spowoduje usunięcie wszystkich istniejących plików na dysku USB.
  • Wyłącz komputer;
  • Włóż dysk flash USB, włącz komputer i naciśnij przycisk kolejności rozruchu (zwykle Esc lub F12);
  • Wybierz swój dysk flash USB.

Wykonanie testu

  • (opcjonalne, ale zalecane) Kliknij dwukrotnie skrypt „Btsnoop Dump” na pulpicie. Rozpocznie się przechwytywanie danych Bluetooth do późniejszej analizy. Nie zamykaj okna terminala.
  • Przełącz słuchawki w tryb parowania;
  • Kliknij strzałkę w prawym górnym rogu, wybierz ikonę Bluetooth → Ustawienia Bluetooth;
  • Wybierz słuchawki, poczekaj, aż parowanie się zakończy i zamknij okno;
  • Ustaw głośność Ubuntu na około 2/3. Zmniejsz także głośność za pomocą przycisków zestawu słuchawkowego, ponieważ po sparowaniu może być bardzo głośny.
  • Otwórz folder „music”, odtwórz „testrecord1.flac”;
  • (opcjonalne, ale zalecane) Zamknij odtwarzacz, zamknij okno terminala. Spowoduje to zatrzymanie przechwytywania danych.
  • (opcjonalne, ale zalecane) Otwórz przeglądarkę Firefox, prześlij zrzut danych (btsnoop_hci.btsnoop na pulpicie) do https://btcodecs.valdikss.org.ru/

Możesz słuchać innej muzyki w folderze z muzyką lub przesłać własną;

W słuchawkach nie powinno być żadnych trzasków, przerw w dźwięku ani innych zniekształceń dźwięku. Jeśli słyszysz dobry dźwięk wysokiej jakości, oznacza to, że Twoje słuchawki obsługują dźwięk o szybkości transmisji 485 kb / s.

Jak przetestować na urządzeniu z Androidem

Aby wykonać test ze smartfona lub tabletu z Androidem, musisz użyć zmodyfikowanego stosu Bluetooth, który wymaga uprawnień roota.

Jak przechwycić zrzut danych Bluetooth na Androida

  1. Wyłącz Bluetooth;
  2. W Ustawieniach programisty włącz przełącznik „Włącz dziennik snoop HCI Bluetooth”;
  3. Włącz Bluetooth, połącz się z zestawem słuchawkowym za pomocą menu Bluetooth (to ważne! Nie zezwalaj na automatyczne połączenie!);
  4. Odtwórz krótką próbkę dźwięku;
  5. Otwórz ustawienia programisty, wyłącz przełącznik „Enable Bluetooth HCI snoop log”;
  6. Powinien zostać utworzony /storage/emulated/0/btsnoop_hci.log lub /data/misc/bluetooth/logs/btsnoop_hci.log. Jeśli go brakuje, otwórz /etc/bluetooth/bt_stack.conf za pomocą edytora tekstu i zobacz ścieżkę w opcji BtSnoopFileName.

W słuchawkach nie powinno być żadnych trzasków, przerw w dźwięku ani innych zniekształceń dźwięku. Jeśli słyszysz dobry, wysokiej jakości dźwięk z poprawioną biblioteką, oznacza to, że Twoje słuchawki obsługują dźwięk o przepływności 512 kb / s.

Proszę uważnie postępować zgodnie z powyższym algorytmem. Szczególnie, jeśli wyłączysz słuchawki lub rozłączysz się po sparowaniu, ważne jest, aby połączyć się ze słuchawkami ręcznie z poziomu ustawień Bluetooth, nie zezwalaj na automatyczne połączenie!

Urządzenia obsługujące co najmniej 512 kbit / s SBC

  • 1 WIĘCEJ iBFree
  • JBL Everest 310
  • JBL Everest 700
  • Skullcandy HESH 3
  • Sony WI-C400
  • Sony MDR-1ABT
  • Sony MDR-ZX770BT
  • Sony MDR-XB650BT
  • Sony MDR-XB950B1
  • Sony SBH50
  • Bluedio T4s (Bitpool max 39. Odpowiadają, że nie obsługują dwukanałowego, ale działają w przypadku wymuszenia, 462 kbit / s. Nie jest zgodny ze specyfikacją A2DP.)
  • Bluedio T5 (Reaguje, aby nie obsługiwać dwukanałowego, ale działa, jeśli jest wymuszony. Nie jest zgodny ze specyfikacją A2DP.)
  • Bluedio T6 (Reaguje na brak obsługi dwukanałowej, ale działa, jeśli jest wymuszony. Nie jest zgodny ze specyfikacją A2DP. Zastosuj układ Max 97220.)
  • Marshall Major II Bluetooth
  • Overdrive RealForce D1
  • Edifier W830BT
  • DEXP BT-250
  • Adapter Logitech BT
  • Noname samochodowa jednostka główna (układ CSR8645)
  • Samochodowa jednostka główna Sony DSX-A400BT

Urządzenia obsługujące SBC powyżej 512 kbit / s

  • JBL Everest 310 (617-660 kbit / s)
  • Sony WI-C400 (576 kbit / s)
  • Sony MDR-ZX770BT (617-660 kbit / s)
  • Marshall Major II Bluetooth (617-660 kbit / s)
  • Overdrive RealForce D1 (730 kbit / s, dwukanałowy, 4 podpasma)

Urządzenia, które nie działają z wyższymi przepływnościami lub dwukanałowymi

  1. Harper HB-202 (trzaski; układ Beken BK3256)
  2. Sony Ericsson MW600 (zniekształcenia wysokich częstotliwości, trzaski; urządzenie z 2009 roku)

Dlaczego jest to ważne: SBC 328k i 485k vs aptX

Wbrew powszechnemu przekonaniu o jakości dźwięku aptX, w niektórych przypadkach może zapewnić gorszą jakość dźwięku niż SBC ze standardową szybkością transmisji wynoszącą 328 kB.

SBC dynamicznie przydziela bity kwantyzacji dla pasm częstotliwości, działając „od dołu do góry”. Jeśli cały bitrate został użyty dla niższych i średnich częstotliwości, wyższe częstotliwości są „odcięte” (wyciszone).

aptX nieustannie kwantyzuje pasma częstotliwości z tą samą liczbą bitów, co czyni go kodekiem o stałej przepływności: 352 kb / s dla 44,1 kHz, 384 kb / s dla 48 kHz. Nie może „przenosić bitów” na częstotliwości, które są w nich najbardziej potrzebne. W przeciwieństwie do SBC, aptX nie „obcina” częstotliwości, ale dodaje do nich szum kwantyzacji, zmniejszając dynamiczny zakres dźwięku, a czasem wprowadzając trzaski. SBC wręcz przeciwnie, „zjada szczegóły” - odrzuca najcichsze obszary.

Średnio, w porównaniu do SBC 328k, aptX powoduje mniejsze zniekształcenia w muzyce o szerokim zakresie częstotliwości, ale w muzyce o wąskim zakresie częstotliwości i szerokim zakresie dynamiki SBC 328k czasami wygrywa.

Rozważmy szczególny przypadek, nagranie fortepianowe. Oto spektrogram:


Najwięcej energii leży w częstotliwościach 0-4 kHz i trwa do 10 kHz.
Spektrogram pliku aptX wygląda następująco:

Oto SBC 328k:

Można zauważyć, że SBC 328k okresowo całkowicie odcinał zakres powyżej 16 kHz i używał wszystkich dostępnych przepływności dla zakresów poniżej tej wartości. Jednak aptX wprowadził więcej zniekształceń w widmie częstotliwości słyszalnym przez ludzkie ucho, które można zobaczyć na odjętym oryginalnym spektrogramie od spektrogramu aptX (im jaśniej, tym więcej zniekształceń):


Podczas gdy SBC 328k wprowadził mniejsze zniekształcenia sygnału w zakresie od 0 do 10 kHz, a reszta została wycięta:

Szybkość transmisji 485k dla SBC wystarczyła, aby zapisać cały zakres częstotliwości, bez odcinania pasm.

SBC 485k na tej próbce audio jest znacznie lepszy niż aptX w zakresie 0-15 kHz i przy mniejszej, ale wciąż zauważalnej różnicy - przy 15-22 kHz (im ciemniej, tym mniej zniekształceń):

Przełączając się na SBC o wysokiej przepływności, przez większość czasu uzyskasz dźwięk lepszy niż aptX, na dowolnych słuchawkach.

  • original_and_aptx.zip
  • sbc.zip

Jak zmodyfikować stosy Bluetooth w systemie Android 5-7

Te modyfikacje powinny zostać zastosowane do standardowych stosów bluetooth dla Androida, Bluedroid (Android 5) i Fluoride (Android 6-7). Stos zmodyfikowany przez Qualcomm nie jest obsługiwany.

Zamień Joint Stereo na Dual Channel w standardowej konfiguracji SBC

android / platforma / zewnętrzne / bluetooth / bluedroid / btif / co / bta_av_co.c: 99

Kod:

const tA2D_SBC_CIE btif_av_sbc_default_config = {BTIF_AV_SBC_DEFAULT_SAMP_FREQ, / * samp_freq * / A2D_SBC_IE_CH_MD_JOINT, / * ch_mode * / A2D_SBC_IE_BLOCKS_16, / * block_len * / A2D_SBC_IE_SUBBAND_8, / * num_subbands * / A2D_SBC_IE_ALLOC_MD_L, / * alloc_mthd * / BTA_AV_CO_SBC_MAX_BITPOOL, / * max_bitpool * / A2D_SBC_IE_MIN_BITPOOL / * min_bitpool * /};

Zamień A2D_SBC_IE_CH_MD_JOINT na A2D_SBC_IE_CH_MD_DUAL.

Zwiększ priorytet dwukanałowy

android / platforma / zewnętrzne / bluetooth / bluedroid / btif / co / bta_av_co.c: 41

Kod:

if (src_cap.ch_mode & A2D_SBC_IE_CH_MD_JOINT) pref_cap.ch_mode = A2D_SBC_IE_CH_MD_JOINT; else if (src_cap.ch_mode & A2D_SBC_IE_CH_MD_STEREO) pref_cap.ch_mode = A2D_SBC_IE_CH_MD_STEREO; else if (src_cap.ch_mode & A2D_SBC_IE_CH_MD_DUAL) pref_cap.ch_mode = A2D_SBC_IE_CH_MD_DUAL; else if (src_cap.ch_mode & A2D_SBC_IE_CH_MD_MONO) pref_cap.ch_mode = A2D_SBC_IE_CH_MD_MONO; Przesuń, jeśli z A2D_SBC_IE_CH_MD_DUAL do góry.
  1. Wyłącz lub zwiększ ograniczenie szybkości transmisji

Stos bluetooth dla Androida ma nie tylko limit bitpool, ale także limit bitrate, 328 kbit / s. Jeśli słuchawki obsługują na przykład bitpool 53 dla 48 kHz, Android zmniejszy bitpool do limitu 328 kbit / s. Nastąpi to PO negocjacjach kodeka, na etapie kodowania nie uwzględniaj wartości puli bitów w pakiecie Bluetooth SetCapabilities.

android / platforma / zewnętrzne / bluetooth / bluedroid / btif / src / btif_media_task.c: 172

Kod:

# zdefiniować DEFAULT_SBC_BITRATE 328

Zastąp 512.

  1. (tylko dla eksperymentów) Wyłącz limit MTU.

Jest to wymagane w przypadku przepływności większych niż ~ 580 kbit / s.

btif / src / btif_media_task.c: 174

Kod:

/ * Rozmiar ładunku 2DH5 679 bajtów - (4 bajty nagłówka L2CAP + 12 bajtów nagłówka AVDTP) * / #define MAX_2MBPS_AVDTP_MTU 663

Jak modyfikować stosy Bluetooth w systemie Android 8-9

Te modyfikacje nie zostały przetestowane, ale powinny działać.

Dodaj obsługę Dual Channel do A2DP SBC Source

/platform/system/bt/stack/a2dp/a2dp_sbc.cc:55

Kod:

/ * Możliwości kodeka SBC SRC * / static const tA2DP_SBC_CIE a2dp_sbc_caps = A2DP_SBC_IE_BLOCKS_8;

dodaj A2DP_SBC_IE_CH_MD_DUAL w ch_mode.

W domyślnej konfiguracji zamień Joint Stereo na Dual Channel

/platform/system/bt/stack/a2dp/a2dp_sbc.cc:82

Kod:

/ * Domyślne SBC kodek konfiguracji * / const tA2DP_SBC_CIE a2dp_sbc_default_config = {A2DP_SBC_IE_SAMP_FREQ_44, / * samp_freq * / A2DP_SBC_IE_CH_MD_JOINT, / * ch_mode * / A2DP_SBC_IE_BLOCKS_16, / * block_len * / A2DP_SBC_IE_SUBBAND_8, / * num_subbands * / A2DP_SBC_IE_ALLOC_MD_L, / * alloc_method * / A2DP_SBC_IE_MIN_BITPOOL, / * min_bitpool * / A2DP_SBC_MAX_BITPOOL, / * max_bitpool * / BTAV_A2DP_CODEC_BITS_PER_SAMPLE_16 / * bits_per_sample * /};

Zamień A2DP_SBC_IE_CH_MD_JOINT na A2DP_SBC_IE_CH_MD_DUAL.

Zwiększ priorytet dwukanałowy

/platform/system/bt/stack/a2dp/a2dp_sbc.cc:1155

Kod:

static bool select_best_channel_mode (uint8_t ch_mode, tA2DP_SBC_CIE * p_result, btav_a2dp_codec_config_t * p_codec_config) {if (ch_mode & A2DP_SBC_IE_CH_MD_JOINT- p_codec_config-> channel_mode = BTAV_A2DP_CODEC_CHANNEL_MODE_STEREO; powrót prawda; } if (ch_mode & A2DP_SBC_IE_CH_MD_STEREO) {p_result-> ch_mode = A2DP_SBC_IE_CH_MD_STEREO; p_codec_config-> channel_mode = BTAV_A2DP_CODEC_CHANNEL_MODE_STEREO; powrót prawda; } if (ch_mode & A2DP_SBC_IE_CH_MD_DUAL) {p_result-> ch_mode = A2DP_SBC_IE_CH_MD_DUAL; p_codec_config-> channel_mode = BTAV_A2DP_CODEC_CHANNEL_MODE_STEREO; powrót prawda; } if (ch_mode & A2DP_SBC_IE_CH_MD_MONO) {p_result-> ch_mode = A2DP_SBC_IE_CH_MD_MONO; p_codec_config-> channel_mode = BTAV_A2DP_CODEC_CHANNEL_MODE_MONO; powrót prawda; } return false; }

Przenieś jeśli z A2DP_SBC_IE_CH_MD_DUAL na górę.

Zwiększ limit szybkości transmisji

/platform/system/bt/stack/a2dp/a2dp_sbc_encoder.cc:42

Kod:

# zdefiniować A2DP_SBC_DEFAULT_BITRATE 328

Zastąp 512.

  1. (tylko dla eksperymentów) Wyłącz limit MTU

Jest to wymagane w przypadku przepływności większych niż ~ 580 kbit / s.

/platform/system/bt/stack/a2dp/a2dp_sbc_encoder.cc:47

Kod:

# zdefiniować MAX_2MBPS_AVDTP_MTU 663

Poprawione stosy Bluetooth (z możliwością flashowania)

  • Le Max 2 Oreo Patched.zip
  • LeEco Cool Changer S1 EUI_5.8.19S.zip
  • Leeco LE2 (EUI 5.9.26s, Android 6) .zip
  • Xiaomi Mi Note (Miui 9 Miui.su usnkreal v8.4.12, Android 6.0.1) .zip
  • Xiaomi mi note 3 (MIUI 9, Android 7) .zip
  • Xiaomi Mi4c (Android 7.0 NRD90M, MIUI-9.5 9.5.1.0 (NXKCNFA)). Zip
  • Xiaomi MI5s (MIUI Global 9.6.1.0, Android 7) .zip
  • Xiaomi Redmi 3s (android 6.01, mmb29m, miui global 9.6.1.0) .zip
  • Xiaomi Redmi 4 (MiuiPro 10 8.8.2, Android 6.0.1, MMB29M) .zip
  • Xiaomi Redmi 4 Prime.zip
  • Xiaomi Redmi 4 pro (MIUI 9, miuipro 8.4.26) .zip
  • Xiaomi Redmi Note 3 (Resurrection Remix Android 7.1.2_r36) .zip
  • Redmi Note 4x (Masik Premium, Android 7.0) .zip
  • Asus Zoom (Android 5, 2.26.40.108_20160520) .zip
  • Le Max 2 Oreo Patched.zip
  • Huawei P9 (Android 7) .zip
  • Samsung Galaxy S4 LTE GT-I9505 (Android 7.1.2; LineageOS 14.1-20180615-NIGHTLY-jfltexx) .zip
  • zamek błyskawiczny
  • Le Max 2 Oreo Patched.zip
10 minut czytania