Membuat perangkat berkemampuan MTP berfungsi dengan Ubuntu?


69

Karena akses penyimpanan Ubuntu 13.04 ke perangkat eksternal melalui MTP seharusnya bekerja di luar kotak melalui modul GVFS-MTP.

Sementara pertanyaan ini adalah tentang Galaxy Nexus, perangkat Android lainnya serta Windows Phones dan pemutar media yang diaktifkan MTP juga didukung .

Untuk pemecahan masalah, lihat server ini .


Saya memiliki sedikit masalah dalam mendapatkan transfer file yang bekerja melalui MTP dengan Galaxy Nexus. Saya menggunakan Kubuntu 11.10 64-bit, dan inilah yang telah saya lakukan dan hasil yang saya dapatkan:

  1. Aturan tambahan untuk perangkat di /etc/udev/rules.d/51-android.rules. Aturannya adalah sebagai berikut dan berfungsi untuk adb:

    SUBSYSTEMS=="usb", ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="6860", MODE="0666", OWNER="leob" #Galaxy Nexus
    
  2. Restart udev(dan komputer hanya untuk memastikan).

Adb berfungsi, dan semua metode untuk membaca dari perangkat melalui MTP tampaknya berfungsi (Saya telah mencoba memasang dengan mtpfs, gmtp dan menggunakan paket mtp-tools secara langsung). Ketika saya mencoba menulis ke perangkat, tidak ada yang saya coba.

Sebagai contoh, menjalankan mtp-newfolder test_dir 0 0memberikan output berikut:

libmtp version: 1.1.0
Device 0 (VID=04e8 and PID=6860) is a Samsung GT-P7510/Galaxy Tab 10.1.
Folder creation failed.
ERROR: Could not close session!

Jika saya menjalankan mtp-folderssetelah gagal mtp-newfolder tanpa menghubungkan kembali perangkat, saya mendapatkan output berikut:

Attempting to connect device(s)
Device 0 (VID=04e8 and PID=6860) is a Samsung GT-P7510/Galaxy Tab 10.1.
PTP_ERROR_IO: failed to open session, trying again after resetting USB interface
LIBMTP libusb: Attempt to reset device
mtp-folders: Successfully connected
Friendly name: (NULL)
Error 1: Get Storage information failed.
Error 2: PTP Layer error 02fe: get_all_metadata_fast(): could not get proplist of all    objects.
Error 2: (Look this up in ptp.h for an explanation.)
Error 2: PTP Layer error 02fe: get_handles_recursively(): could not get object handles.
Error 2: (Look this up in ptp.h for an explanation.)
LIBMTP_Get_Storage()
: Resource temporarily unavailable
OK.

Ditemani oleh hal-hal berikut dalam dmesg:

[ 1000.912082] usb 2-4: reset high speed USB device number 7 using ehci_hcd
[ 1001.045877] usb 2-4: usbfs: process 3166 (mtp-folders) did not claim interface 0 before use

Adakah yang tahu apa yang harus dilakukan?

SUNTING:

Saya juga mencoba mode PTP. Sekali lagi, membaca berfungsi dengan baik, tetapi saya tidak bisa menulis apa pun ke perangkat.


Saya tidak berpikir itu Samsung .... dan saya pikir itu Android. Perangkat bertenaga Honeycomb saya adalah cara yang persis sama di mana Anda harus menggunakan MTP saja. Saya pikir ini adalah bagaimana semua perangkat Android pos 2.3 akan menjadi.

Jawaban:


37

Sejak Ubuntu 13.04, akses penyimpanan ke perangkat eksternal melalui MTP berfungsi di luar kotak melalui modul GVFS-MTP.

Pertanyaan terkait: Apakah ada rencana untuk meningkatkan dukungan mtp pada rilis Ubuntu yang akan datang?

Untuk pemecahan masalah, lihat jawaban ini .


Bagi saya, itu adalah masalah karena tidak memiliki libmtpfile terbaru di sistem saya. Jadi saya memperbaiki masalahnya dan membuat artikel ini untuk membantu orang lain .

Ringkasan tautan: Ada bug di libmtppaket dengan rilis Ubuntu yang lebih lama. Bug ini sudah diperbaiki di sumber terbaru dari libmtp.


1
Masalahnya sepertinya sudah diperbaiki dalam paket untuk Ubuntu 12.04, jadi itu bisa digunakan jika Anda cukup berani untuk melakukannya. Saya mengambilnya dari launchpad.net/ubuntu/+source/libmtp/1.1.1-1 dan menciptakan paket-paket untuk sistem (dan yang sama untuk gmtp)
Tatu Lahtela

@Shannon. Terima kasih. Ini solusi terbaik. Seandainya aku menemukannya dulu.
MountainX

2
rhythmbox masih membeku dan memberikan kesalahan (LIBMTP_Send_Representative_Sample (): tidak bisa mendapatkan info objek.) ketika mencoba mengakses nexus, dan nautilus memberikan: Tidak dapat me-mount Galaxy Nexus; Kesalahan menginisialisasi kamera: -60: Tidak dapat mengunci perangkat. Sial.
waspinator

Akan menyenangkan untuk memperbarui instruksi untuk mendapatkan mtp terbaru, bukan 1.1.1
Kostiantyn Rybnikov

21

Sudahkah Anda mencoba saran Bilal Akhtar di omgubuntu ?

Menghubungkan ponsel atau tablet Android Anda ke Ubuntu dengan MTPFS

  1. Mempersiapkan

    Pertama, instal alat yang diperlukan dengan sudo apt-get install mtp-tools mtpfs

    Hubungkan Galaxy Nexus Anda ke komputer Anda. Di ponsel Anda, buka laci pemberitahuan, dan klik "Jenis koneksi USB". Pastikan MTP dipilih.

    gambar yang menunjukkan pengaturan koneksi USB Android

    Kemudian, jalankan perintah ini:

    mtp-detect | grep idVendor
    mtp-detect | grep idProduct
    

    Anda akan mendapatkan output seperti ini: masukkan deskripsi gambar di sini

    Sekarang, jalankan perintah ini:

    gksu gedit /etc/udev/rules.d/51-android.rules
    

    Jendela Gedit seharusnya terbuka. Ketikkan teks ini di dalamnya, semuanya dalam satu baris :

    SUBSYSTEM=="usb", ATTR{idVendor}=="VENDORID", ATTR{idProduct}=="PRODUCTID", MODE="0666"
    

    Ganti VENDORIDdengan yang idVendortelah Anda catat sebelumnya. Demikian pula, ganti PRODUCTIDdengan yang idProducttelah Anda catat. Dalam kasus saya, mereka masing 04e8- 685cmasing, tetapi mereka mungkin berbeda untuk Anda.

    Simpan dan tutup file. Kemudian, putuskan sambungan telepon Anda dan jalankan perintah-perintah ini:

    sudo service udev restart
    sudo mkdir /media/GalaxyNexus
    sudo chmod a+rwx /media/GalaxyNexus
    sudo adduser $USER fuse
    

    $USERadalah variabel shell default dan harus menjadi pengguna yang ingin Anda tambahkan (biasanya sendiri). Sekarang, jalankan perintah ini:

    gksu gedit /etc/fuse.conf
    

    Di jendela Gedit, hapus #di awal baris terakhir (yang dimulai dengan #user_allow_other) seperti ini:

    masukkan deskripsi gambar di sini

    Kamu hampir selesai! Sekarang, nyalakan kembali komputer Anda, dan kemudian jalankan tiga perintah ini:

    echo "alias android-connect=\"mtpfs -o allow_other /media/GalaxyNexus\"" >> ~/.bashrc
    echo "alias android-disconnect=\"fusermount -u /media/GalaxyNexus\"" >> ~/.bashrc
    source ~/.bashrc
    
  2. Pemakaian

    Hubungkan ponsel Anda, pastikan ponsel Anda menggunakan MTP dan jalankan android-connect.

    Voila! Sekarang Anda dapat menjelajahi konten ponsel Android menggunakan Nautilus. Jalankan pengelola file, dan kemudian di bilah samping klik GalaxyNexus untuk meramban isi telepon Anda seperti yang Anda lakukan dengan stik USB. Anda juga dapat menambah, menghapus, dan memodifikasi file seperti sistem file normal.

    tangkapan layar nautilus yang menampilkan konten telepon

    Untuk menghapus ponsel dengan aman, jalankan saja android-disconnect.

  3. Kesimpulan

    Mulai sekarang dan seterusnya, Anda hanya perlu menjalankan android-connectuntuk memasang telepon Anda dan kemudian android-disconnectuntuk menghapus telepon Anda dengan aman. Segala sesuatu yang lain harus ditangani secara otomatis. Saya mencoba banyak cara untuk mendapatkan mount dan unmount terjadi secara otomatis pada koneksi kabel, tetapi ini adalah solusi terbaik yang bisa saya dapatkan.

    Kedua perintah ini tidak akan memerlukan izin root untuk dijalankan. Semua pengguna yang merupakan anggota grup pengguna sekering harus dapat menjalankan perintah ini tanpa akses root.

    Itu dia! Anda telah berhasil menghubungkan ponsel Ice Cream Sandwich Anda ke komputer Ubuntu Anda. Prosesnya mungkin lama bagi seorang pemula, tapi saya yakin seseorang akan datang dan membuat GUI untuk semua ini sehingga semuanya terjadi dengan lancar. :)


Ya, sudah mencoba sebagian besar cara menggunakan mtpfs-tools. Seperti yang diketahui Shannon, itu sepertinya bug di libmtp.
Leo

Ini bekerja, tetapi saya punya beberapa pertanyaan. 1. Apa yang dilakukan konfigurasi udev itu, mengapa itu tidak berfungsi tanpa itu? 2. Dengan sihir apa ia tahu perangkat mana yang akan dipasang ketika Anda melakukannya mtpfs, atau apakah itu hanya mendukung 1 perangkat yang terhubung sekaligus?
Bart van Heukelom

Juga ketika menyalin file besar (dengan Nautilus) itu akan muncul untuk menyalin sangat cepat (50MB / s) tetapi selama waktu itu tidak menyalin apa pun. Hanya ketika bilah kemajuan mencapai 100% akan memulai salinan asli (dan antarmuka hang). Mungkin beberapa jenis opsi buffer dapat dinonaktifkan?
Bart van Heukelom

Sayangnya saya tidak tahu jawaban yang Anda inginkan. Maafkan saya.
desgua

Melakukan semua ini, tetapi mendapatkan pesan ini ketika mencoba menghubungkan-android: fusermount: gagal membuka /etc/fuse.conf: Izin ditolak fusermount: opsi allow_other hanya diizinkan jika 'user_allow_other' disetel di /etc/fuse.conf even meskipun saya mengedit /etc/fuse.conf seperti yang diinstruksikan.
Dmitry Shvedov

21

Menghubungkan perangkat melalui MTP dengan GVFS

Karena akses penyimpanan Ubuntu 13.04 ke perangkat yang mampu MTP bekerja di luar kotak melalui backend GVFS . Silakan lihat apakah ada rencana untuk meningkatkan dukungan mtp pada rilis Ubuntu yang akan datang? untuk instruksi pemasangan sebelum 13.04.

Solusi ini harus bekerja untuk semua perangkat Android yang menyediakan fungsionalitas MTP dan mungkin semua perangkat non-Android dengan fungsionalitas MTP seperti Ponsel Windows dan Pemutar Media Portabel .

Jangan bingung

Ada beberapa kebingungan, mari kita coba jelaskan:

  • Anda tidak perlu melakukan apa pun yang dapat membatalkan garansi Anda!

    • Anda tidak perlu melakukan root pada perangkat Anda.
    • Anda tidak perlu membuka kunci bootloader. (Anda dapat menemukan petunjuk untuk Android nya e .)

    Membuka kunci hanya mengacu pada layar kunci sistem operasi dalam jawaban ini.

  • Anda tidak perlu mengonfigurasi akses pengembang ke perangkat Anda seperti ADB, fastboot atau yang serupa melalui aturan udev tertentu. (Anda dapat menemukan petunjuk untuk Android dalam bab Konfigurasi USB Access nya e nya e .)

  • Sejauh yang saya tahu Anda juga tidak perlu FUSE atau mengkonfigurasi opsi terkait FUSE.

Memecahkan masalah

  1. Saya tidak bisa meletakkan file ke perangkat.

    Perangkat Anda harus dibuka kuncinya untuk mengakses penyimpanan perangkat dengan Ubuntu melalui MTP.

    menunjukkan perangkat dalam nautilus dalam keadaan terkunci dan tidak terkunci

  2. Saya menerima pesan kesalahan bahwa perangkat tidak dapat dipasang.

    Jika Anda mendapatkan pesan kesalahan di bawah ini, coba pasang kembali perangkat satu kali .

    pesan kesalahan yang mungkin muncul saat menghubungkan

    Jika pesan kesalahan muncul lagi buka jendela nautilus baru dari peluncur (lebih disukai dengan mengklik ikon perangkat) dan mungkin menutup jendela nautilus saat ini. Kemungkinan terkait: Bagaimana membuat aturan udev untuk menonaktifkan salah satu perangkat Android?

  3. Periksa apakah ada aturan udev untuk perangkat Anda

    Buka terminal dan ketik lsusb. Temukan perangkat Anda di output dan catat ID (misalnya 0fce:01b1). Bagian pertama adalah ID vendor bagian terakhir ID produk.

    Buka file aturan mtp udev yang sesuai dengan nano /lib/udev/rules.d/69-libmtp.rulesdan cari ID produk Anda (gunakan Ctrl+ W). Jika Anda tidak dapat menemukannya, Anda harus membuat entri khusus dengan /etc/udev/rules.d/69-libmtp.rulesmengikuti pola di bawah ini dan reboot .

    # SONY Xperia Z2 MTP
    ATTR{idVendor}=="01b1", ATTR{idProduct}=="01b1", SYMLINK+="libmtp-%k", MODE="660", GROUP="audio", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
    

    Anda harus mempertimbangkan untuk mengajukan bug terhadap paket libmtp (lebih tepatnya libmtp-common ) agar perangkat Anda disertakan dalam versi mendatang, jika ini berhasil untuk Anda.

  4. Saya masih tidak bisa terhubung

    Perangkat Anda tidak didukung oleh yang mendasarinya libmtpatau Anda mungkin mengalami masalah yang sama dengan Lumia 620 saya, silakan ikuti solusi (langkah-langkah untuk mereproduksi) yang saya posting di LP # 1247572: Nokia Lumia 620 (WP8) gagal untuk me-mount dengan andal melalui gvfs-mtp di nautilus . (Perangkat masih tidak berfungsi sempurna di sini, tetapi menggunakan mtp-detectbantuan.)

    Anda harus mencari pelacak bug libmtp untuk perangkat Anda dan mengikuti instruksi untuk perangkat baru di halaman proyek untuk membuka laporan bug.

  5. Pelacak bug mencantumkan perangkat saya sebagai didukung tetapi tetap tidak berfungsi

    Dalam beberapa kasus, laporan bug mengenai perangkat Anda mungkin telah diajukan dan diselesaikan dalam rilis libmtp yang lebih baru daripada yang dikirimkan oleh distribusi Anda (mis: Motorola Moto G ). Jika demikian, Anda harus menunggu repositori resmi diperbarui atau mencari PPA yang diperbarui.

    Daftar yang diperbarui dari semua versi libmtp yang tersedia melalui saluran perangkat lunak resmi Ubuntu dan PPA pribadi dapat ditemukan di sini (pastikan untuk memperluas versi lain dari 'libmtp' di arsip yang tidak terpercaya ). Pada 2014/02/13 PPA ini oleh Matthieu Baerts menawarkan paket libmtp terbaru yang tersedia untuk Ubuntu.

    Peringatan : PPA ini berisi berbagai paket yang berbeda dan mungkin tidak stabil. Saya akan menyarankan agar tidak menambahkannya ke sistem Anda. Sebagai gantinya Anda dapat mengunduh paket libmtp secara terpisah dan menginstalnya secara manual di sistem Anda.

    Harap kenali diri Anda dengan PPA dan risikonya sebelum melangkah lebih jauh. Baca juga paragraf di bawah ini tentang mengembalikan paket asli Anda sebelum melanjutkan dengan langkah-langkah berikut:

    1. Buka halaman detail paket PPA dan perluas entri libmtp
    2. Download paket berikut: libmtp-common, libmtp-runtime, libmtp9, mtp-tools. Pastikan untuk memilih arsitektur yang tepat untuk sistem Anda (umumnya akan seperti ini amd64).

      Berikut adalah tautan paket pada 2014/02/13: libmtp-common , libmtp-runtime , libmtp9 , mtp-tools

    3. Lanjutkan untuk menginstal secara manual paket yang diperbarui dengan dpkg (ubah $HOME/Downloadske folder unduhan Anda dan pastikan tidak ada file deb lainnya:

      cd "$HOME/Downloads"
      sudo dpkg -i *.deb
      
    4. Setelah semuanya berhasil diinstal, restart komputer Anda, buka kunci perangkat Android Anda, sambungkan melalui USB dan itu akan muncul di manajer file Anda.

    Ini berfungsi dengan baik untuk saya (@Glutanimate) dengan Motorola Moto G. Karena saya menjalankan Ubuntu 12.04 LTS, saya harus menginstal versi terbaru dari gnome-gvfs. Silakan lihat instruksi pemasangan sebelum 13.04 di bagian atas untuk informasi lebih lanjut.

    Untuk membatalkan perubahan jika terjadi kesalahan atau jika perangkat masih tidak dikenali Anda harus menginstal paket asli secara manual. Kepala ke sumber libmtp gambaran dan menemukan rilis Ubuntu Anda. Luaskan entri yang dipermasalahkan dan lanjutkan mengunduh paket, seperti yang Anda lakukan pada langkah 2 sebelumnya. Lanjutkan dengan instalasi seperti dijelaskan pada langkah 3 dan reboot sistem Anda. Semuanya harus kembali normal sekarang.


1
+1 untuk 'Jangan bingung' Tidak berfungsi untuk galaksi s3 mini saya :(
hugo der hungrige

Bekerja untuk tablet Samsung Galaxy saya dengan Android 4.1.2, tetapi saya tidak dapat mengedit file saat bepergian. Apakah Anda punya solusi untuk itu juga?
Vesnog

"Beberapa panduan menyarankan menambahkan aturan udev ke file bernama 51-android.rules. Ini bukan untuk MTP, ..." Anda kehilangan semua kredibilitas ketika Anda mengatakan itu. Aturan di udev / rules.d / sepenuhnya fleksibel. 51-android-rules adalah tempat yang sangat tepat bagi mereka. Anda bisa memasukkan aturan ke dalam 52 aturan telepon
Auspex

@Auspex Baris ini bisa ditulis lebih baik, tetapi alih-alih mengeluh Anda bisa melakukan itu (yang akan membutuhkan membaca dan memahami seluruh posting) atau memberikan jawaban yang lebih baik. Melihat profil Anda, saya anggap Anda tahu bagaimana situs SE seharusnya bekerja. Bagaimana Anda (salah) mengelola file Anda /etcsepenuhnya terserah Anda. Seperti dijelaskan di atas, idealnya semua aturan udev harus disediakan ootb. Jika tidak, seseorang harus mengajukan bug untuk memasukkan aturan yang hilang /lib/.../69-libmtp.rules, sehingga semua orang akan senang dengan rilis berikutnya.
LiveWireBT

1
@ Auspex Saya tidak mengerti apa yang ingin Anda capai di sini. Saya ulangi: bagaimana Anda mengelola file Anda /etcterserah Anda. /lib/udev/rules.d/69-libmtp.rulesadalah apa yang dipilih oleh pengelola paket dan saya menyarankan untuk mengajukan bug terhadap paket itu (saya telah memperbarui jawaban saya) untuk pengguna yang mengalami masalah ini. Jika Anda masih memiliki masalah dengan itu, silakan berbicara dengan pengelola atau memposting jawaban Anda sendiri. Saya sekarang mengundurkan diri dari percakapan ini dengan Anda tentang topik ini.
LiveWireBT

5

Semua program berdasarkan libmtptampaknya masih memiliki masalah dengan Galaxy Nexus (pada libmtp 1.1.3). Program berdasarkan pada gphoto2pekerjaan untuk saya.

Secara pribadi saya menggunakan gphotofs, tersedia dalam paket dengan nama yang sama.

Gunakan gphotofs ~/mymountpointuntuk me-mount, lalu fusermount -u ~/mymountpointunmount ketika Anda selesai.


Baru saja ditingkatkan ke 12,04 dan tampaknya libmtp 1.1.3 tidak berfungsi dengan benar seperti yang Anda katakan. Harus menyelidiki ini sedikit lebih banyak. gphotofs bekerja dengan baik, jadi terima kasih atas sarannya!
Leo

1
Menggunakan gphotofsmeninggalkan saya dengan satu direktori yang kosong.
Nathan Osman

4

Instal berikut ini dan reboot:

sudo apt-get install gvfs-backends mtpfs jmtpfs libmtp-common mtp-tools libmtp-dev libmtp-runtime libmtp9 gmtp libdbus-cpp5 libgflags2v5 libgoogle-glog0v5 libmtp-dbg libmtp-doc libmtpserver-dev libmtpserver1 libprocess-cpp3 mtp-server

Dan ya, jawaban ini berlaku juga untuk "Ubuntu 13.04 [dan di atas; di mana] akses penyimpanan ke perangkat eksternal melalui MTP seharusnya bekerja di luar kotak melalui modul GVFS-MTP" . Karena mungkin saja tidak dipasang di luar kotak. Bahkan ketika perangkat MTP Anda entah bagaimana sudah di-automount! (Tetapi memberi Anda akses baca saja atau masalah lainnya.)
tanius

1
@ Tanius Saya harus mengatakan bahwa MTP sangat lambat sehingga saya bahkan tidak menggunakannya lagi. esfile explorer memiliki server ftp dan saya hanya menggunakan curl untuk mengunggah file ke perangkat di jaringan lokal saya.
mchid

Perintah ini menunjuk ke sumber masalah:The following packages have unmet dependencies: gvfs-backends : Depends: gvfs (= 1.28.2-1ubuntu1~16.04.2) but 1:1.20.3-4salbabix27trusty is to be installed Depends: gvfs-daemons (= 1.28.2-1ubuntu1~16.04.2) Depends: gvfs-libs (= 1.28.2-1ubuntu1~16.04.2) but 1:1.20.3-4salbabix27trusty is to be installed Depends: gvfs-common (= 1.28.2-1ubuntu1~16.04.2) but 1:1.20.3-4salbabix27trusty is to be installed E: Unable to correct problems, you have held broken packages.
NoBugs

1
Anda harus mencatat bahwa ketika ini gagal seperti dalam komentar di atas, hapus dan instal ulang "ubuntu-desktop" dan yang di atas dengan sudo apt-get install --reinstall. dan kemudian restart.
NoBugs

0

Sebagai langkah pertama, saya akan menginstal jmtpfs( sudo apt-get install jmtpfsdi terminal - Ctrl+ Alt+ T), kemudian membuat folder dengan mkdir foldernamedan kemudian memasang perangkat jmtpfs foldername, lalu pergi ke nautilus (File).

Jika perangkat Anda tidak kompatibel dengan libmtpversi di ubuntu. Anda harus mengunduh dan membuat yang terbaru libmtp(> 1.1.12), seperti pada: Bagaimana cara saya menginstal libmtp versi terbaru?

Anda harus dapat melihat folder juga menggunakan mtp-foldersdi terminal atau dengan antarmuka grafis gmtp.

Langkah sebelumnya dapat menunjukkan kesalahan jika Anda menjalankannya tanpa sudo:

libusb_open() failed!: Permission denied

Untuk menghindari penggunaan sudo, Anda harus menambahkan perangkat Anda ke /etc/udev/rules.d/51-android.rulesfile seperti di atas (lihat desgua) dan memuat ulang aturan atau memulai ulang.


-1

Hanya sedikit solusi, sambungkan ponsel berbasis ICS Anda dengan MASS STORAGE http://forum.xda-developers.com/showthread.php?t=1556367

adb install UMS1.0.apk

1
Meskipun ini adalah solusi yang baik untuk beberapa ponsel, ini hanya berfungsi jika ponsel memiliki kartu sd terpisah. Sehubungan dengan pertanyaan awal, ini tidak akan berfungsi dengan Galaxy Nexus.
coversnail

Bahkan dengan kartu-sd yang terpisah, saya tidak berpikir pemasangan sebagai perangkat penyimpanan massal adalah pilihan pada versi Android yang lebih baru. Meskipun, "selalu ada pintu belakang di suatu tempat" jadi saya tidak akan mengatakan sejauh itu tidak mungkin.
mchid

Itu 4 tahun yang lalu;)
jflaflamme
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.