Arch linux android mtp

Содержание
  1. Media Transfer Protocol
  2. Contents
  3. Connecting
  4. FUSE filesystems
  5. Android File Transfer
  6. MTPfs
  7. jmtpfs
  8. SIMPLE-MTPFS
  9. go-mtpfs
  10. libmtp
  11. Frontends
  12. Media players
  13. File manager integration
  14. gvfs-mtp
  15. Troubleshooting
  16. libmtp (gvfs-mtp): filemanager (nautilus, pcmanfm, vifm and etc) hangs on accessing DCIM/Camera of Android device
  17. jmtpfs: Input/output error upon first access
  18. kio-mtp: cannot use «Open with File Manager» action
  19. kio-mtp being called simultaneously by different services
  20. Android File Transfer: connect failed: no MTP device found
  21. Android
  22. Contents
  23. Transferring files
  24. App development
  25. Android Studio
  26. SDK packages
  27. Android Emulator
  28. Other SDK packages in the AUR
  29. Making /opt/android-sdk group-writeable
  30. Other IDEs
  31. Netbeans
  32. Vim / Neovim
  33. Emacs
  34. Other Tools
  35. Marvin
  36. Building
  37. Required packages
  38. Java Development Kit
  39. Setting up the build environment
  40. Downloading the source code
  41. Building the code
  42. Testing the build
  43. Creating a flashable Image
  44. Flashing
  45. Fastboot
  46. Samsung devices
  47. samloader
  48. Heimdall
  49. Odin (Virtualbox)
  50. Use Android on GNU/Linux
  51. Troubleshooting
  52. Android Studio: Android Virtual Devices show ‘failed to load’.
  53. Android Studio: ‘failed to create the SD card’
  54. Eclipse: During Debugging «Source not found»
  55. ValueError: unsupported pickle protocol
  56. libGL error: failed to load driver: swrast OR AVD does not load and no error message displayed
  57. sh: glxinfo: command not found
  58. Android Emulator: no keyboard input in xfwm4
  59. Android Emulator: Window is shaking and blinking when used in WM tiled mode
  60. Android Emulator: Segmentation fault (core dumped)
  61. adb: sideload connection failed: insufficient permissions for device

Media Transfer Protocol

The Media Transfer Protocol (MTP) can be used to transfer media files to and from many mobile phones (all Windows Phone 7/8/10 devices, most newer Android devices) and media players (e.g. Creative Zen).

Contents

Connecting

To connect your computer to a device via MTP:

  • the device needs to be connected to your computer via USB
  • MTP needs to be enabled on the device
  • the device’s screen needs to be unlocked (for security reasons)

FUSE filesystems

The following programs let you access MTP devices via a FUSE filesystem.

For the FUSE-based file systems, you might need to create the mount-point directory first. The directory

/mnt is used in the examples below.

FUSE mounts can generally be unmounted using fusermount -u mountpoint .

Android File Transfer

Android File Transfer — MTP client with CLI, Qt UI, and FUSE wrapper which uses a custom MTP implementation

Mount your device on

If you want album art to be displayed, it must be named albumart.xxx and placed first in the destination folder. Then copy other files. Also, note that fuse could be 7-8 times slower than ui/cli file transfer.

If you want to interact with it via the command line interface, run the command:

Type help in order to list all the commands available, exit to quit.

If you want to interact with it via the graphical user interface, start the android-file-transfer application, choose a destination folder and click any button on the toolbar. Available options are: Upload Album, Upload Directory and Upload Files. The latter two are self-explanatory. Upload album searches the source directory for album covers, and sets the best available cover.

MTPfs

MTPfs — based on libmtp, it is a FUSE filesystem that supports reading and writing from any MTP device

First edit your /etc/fuse.conf and uncomment the following line:

Mount your device on

jmtpfs

jmtpfs — based on libmtp for accessing MTP (Media Transfer Protocol) devices

Mount device on

Make this cohere to the rest of Linux (use regular mount/umount commands) by doing two steps

add this line to /etc/fstab ;

Now mount the device and see if the options «took»

SIMPLE-MTPFS

SIMPLE-MTPFS — based on libmtp Simple Media Transfer Protocol FileSystem is a file system capable of operating on files on MTP devices attached via USB to local machine

Run simple-mtpfs -l to list detected devices.

To mount the first device in the list to

/mnt , run simple-mtpfs —device 1

go-mtpfs

go-mtpfs — FUSE filesystem with custom MTP implementation, written in Go

Install android-udev , which will allow you to edit /etc/udev/rules.d/51-android.rules and apply to your idVendor and idProduct , which you can see after running mtp-detect. To the end of the line, add your user OWNER=» » .

Mount device on

libmtp

libmtp is a library MTP implementation, which also comes with some example command-line tools (which you can list using pacman -Ql libmtp ).

Run mtp-detect to detect your device.

If an error is returned, make sure your user is in the uucp user group.

You can transfer files using the mtp-connect command.

Frontends

gMTP — A graphical frontend for libmtp. It lets you connect to Android devices and manage files using a desktop agnostic GUI.

Media players

You can also use your MTP device in music players such as Amarok. To achieve this, you might have to edit /etc/udev/rules.d/51-android.rules (the MTP device used in the following example is a Galaxy Nexus). Run:

Search for your device. It should be something like that:

And entry to /etc/udev/rules.d/51-android.rules will be this:

Also reload udev rules:

File manager integration

To view the contents of your Android device’s storage via MTP in your file manager, install the corresponding plugin:

  • For file managers that use GVFS (GNOME Files), install gvfs-mtp for MTP or gvfs-gphoto2 for PTP support.
  • For file managers that use KIO (KDE’s Dolphin), MTP support is included in kio-extras (dependency of dolphin).

After installing the required package, the device should show up in the file manager automatically and be accessible via an URL, for example mtp://[usb:002,013]/ .

gvfs-mtp

This article or section is a candidate for merging with udev.

The gvfs-mtp is available in the official repositories.

With lsusb you can get information about your device where Bus and Device numbers can be used with gvfs-mtp and device ID for creating of an udev rule.

Читайте также:  Адаптер apple carplay для android

To see detected device with enabled MTP

To mount all available connected MTP devices use inline script

To mount or dismount from a command with gvfs-mtp use Bus and Device numbers, e.g. to mount gio mount mtp://[usb:001,007]/ and to unmount gio mount -u mtp://[usb:001,007]/ . The mounted device will be available in a directory that begins with mtp:host= and is located under /run/user/$UID/gvfs/.

Disable automount of MTP devices with gvfs you will need to change value true to false for variable AutoMount that is located in /usr/share/gvfs/mounts/mtp.mount .

If your device is not showing up in the file manager then #libmtp is missing a native support and is not currently available in the list of the supported devices. If you will try to mount by using command line you may also get an error

The workaround to make it shown in the file manager is to write an udev rule for the device but it is no guaranty that you will be able to mount it with by using MTP connection.

Use ID number that represents by pattern vendorId:productID,e.g. 04b7:88a9, and make an udev rule by creating a configuration file

Reload the udev rules.

The file managers with support for gvfs will be able to show MTP devices and mount them if supported by #libmtp but if has no support and cannot be opened then change settings in the phone to PTP and install gvfs-gphoto2 for having access at least to the photos, command line mounting of PTP is a little similar to mounting of the MTP devices: gio mount gphoto2://[usb:002,019]/ .

Troubleshooting

libmtp (gvfs-mtp): filemanager (nautilus, pcmanfm, vifm and etc) hangs on accessing DCIM/Camera of Android device

Symptoms: everything works fine till moment of entering DCIM/Camera directory. In this case filemanager freezes and even in command line you cannot run even ls on that directory.

Possible and very probable reason is the bug of libmtp.

It seems that it is caused by file with name like 20180915_180351(0).jpg . Samsung phones for example like to create files with such names.

There are several tickets (one, two and etc) and questions (one, two) about it.

So possible workaround is to use different mtp option from #FUSE filesystems like go-mtpfs for such directories or somehow change file naming policy of your phone camera (or switch to another camera app like Open Camera for example).

jmtpfs: Input/output error upon first access

Symptoms: jmtpfs successfully mounts, but as soon as one attempts to access files on the device (e.g. via ls ), an error is reported:

This appears to be a security feature: MTP does not work when the phone is locked by the lockscreen. Unlock the phone and it should work again as long as the cord remains connected.

kio-mtp: cannot use «Open with File Manager» action

If you are not able to use the action «Open with File Manager», you may work around this problem by editing the file /usr/share/solid/actions/solid_mtp.desktop .

Change the line Exec=kioclient exec mtp:udi=%i/ to Exec=dolphin «mtp:/» .

kio-mtp being called simultaneously by different services

Parallel usage of mtpfs and kio-mtp, as well as conflicting services using kio-mtp -music players included- should be avoided, as mentioned in this forum.

Amarok’s plugin for MTP services, for example, might be preventing Dolphin (plasma) to access different phone model’s files. Switching it off was a solution for at least one user.

Android File Transfer: connect failed: no MTP device found

After installing android-file-transfer , while trying to mount any MTP device if you get the following error:

then install the package: android-udev . This package contains per manufacturer/device udev rules for MTP devices, making it easier to use ADB or MTP.

Источник

Android

Contents

Transferring files

There are various ways to transfer files between a computer and an Android device:

  • USB cable
    • Media Transfer Protocol for modern Android devices
    • USB mass storage for older devices
    • Android Debug Bridge
  • special USB sticks / regular USB stick with adapter
  • Bluetooth
  • Arch Linux software with Android counterparts
    • client or server for protocols that can be used to transfer files (eg. SSH, FTP, Samba or HTTP)
    • KDE Connect ( kdeconnect ) – integrates your Android device with the KDE or Gnome desktop (featuring synced notifications & clipboard, multimedia control, and file/URL sharing).
    • cloud synchronization clients
    • Syncthing
    • sendanywhereAUR – cross-platform file sharing
    • qrcpAUR – transfer files over wifi from your computer to your mobile device by scanning a QR code

App development

The officially supported way to build Android apps is to use #Android Studio.[1]

Android Studio

Android Studio is the official Android development environment based on IntelliJ IDEA. It provides integrated Android developer tools for development and debugging.

Android Studio creates a .android directory in home directory. To reset Android Studio, this directory can be removed.

The Android Studio Setup Wizard installs the required #SDK packages and places the SDK by default in

To build apps from the command-line (using e.g. ./gradlew assembleDebug ) set the ANDROID_SDK_ROOT environment variable to your SDK location.

SDK packages

Android SDK packages can be installed directly from upstream using #Android Studio’s SDK Manager or the sdkmanager command line tool (part of the Android SDK Tools). Some Android SDK packages are also available as AUR packages, they generally install to /opt/android-sdk/ .

Android SDK Package SDK-style path AUR package AUR dummy CLI tools
Command-Line Tools tools android-sdk-cmdline-tools-latest AUR android-sdk-cmdline-tools-latest-dummy AUR apkanalyzer, avdmanager, lint, retrace, screenshot2, sdkmanager
SDK Build-Tools build-tools;version android-sdk-build-tools AUR android-sdk-build-tools-dummy AUR aapt, aapt2, aidl, apksigner, bcc_compat, d8, dexdump, dx, lld, llvm-rs-cc, mainDexClases, split-select, zipalign
SDK Platform-Tools platform-tools android-sdk-platform-tools AUR android-sdk-platform-tools-dummy AUR adb, dmtracedump, e2fsdroid, etc1tool, #fastboot, hprof-conv, make_f2fs, make_f2fs_casefold, mke2fs, sload_f2fs, sqlite3, systrace
SDK Platform platforms;android-level android-platform AUR , older versions android-platform-dummy AUR (unnecessary)
Читайте также:  Call log monitor для андроид

The android-tools package provides adb, #fastboot, e2fsdroid and mke2fs.android from the SDK Platform-Tools along with mkbootimg and ext2simg .

Android Emulator

The Android Emulator is available as the emulator SDK package, the android-emulator AUR package, and there is also a dummy package for it: android-emulator-dummy AUR .

To run the Android Emulator you need an Intel or ARM System Image. You can install them through the AUR[2], with the sdkmanager or using Android Studio’s AVD Manager.

Other SDK packages in the AUR

The Android Support Library is now available online from Google’s Maven repository. You can also install it offline through the extras;android;m2repository SDK package (also available as android-support-repository AUR ).

Making /opt/android-sdk group-writeable

The factual accuracy of this article or section is disputed.

The AUR packages install the SDK in /opt/android-sdk/ . This directory has root permissions, so keep in mind to run sdk manager as root. If you intend to use it as a regular user, create the android-sdk users group, add your user.

Set an access control list to let members of the newly created group write into the android-sdk folder. As running sdkmanager can also create new files, set the ACL as default ACL. the X in the default group entry means «allow execution if executable by the owner (or anyone else)»

Re-login or as log your terminal in to the newly created group:

Other IDEs

Android Studio is the official Android development environment based on IntelliJ IDEA. Alternatively, you can use Netbeans with the NBAndroid-V2. All are described below.

Netbeans

If you prefer using Netbeans as your IDE and want to develop Android applications, use NBAndroid-V2 .

Install android-sdk AUR package and follow the instructions from the NBANDROID README.

Vim / Neovim

It is possible to write flutter applications for Android and iOS using (Neo)vim like an IDE. Install coc using a Vim plugin manager. Also install the coc-flutter extension for autocompletion (like in Android Studio) and to load the code into an Android emulator.

Emacs

To develop a mobile flutter application using Emacs, as the the official instruction at flutter.dev suggests, install lsp-dart.

Other Tools

Marvin

Marvin is a tool which helps beginners set up an Android development environment. Installing marvin_dsc AUR helps you set up the following things: JDK, Android SDK, IDE(s), and AVD.

Building

Please note that these instructions are based on the official AOSP build instructions. Other Android-derived systems such as LineageOS will often require extra steps.

Required packages

As of 2020/April, to build either AOSP 10 or LineageOS 17.1 you need (possibly a subset of) base-devel , multilib-devel , gcc , repo , git , gnupg , gperf , sdl , wxgtk2 , squashfs-tools , curl , ncurses , zlib , schedtool , perl-switch , zip , unzip , libxslt , bc , rsync , ccache , lib32-zlib , lib32-ncurses , lib32-readline , ncurses5-compat-libs AUR , lib32-ncurses5-compat-libs AUR , and a TTF font installed (e.g. ttf-dejavu ). In particular, no Python2 or Java are required, as they are provided by AOSP/Lineage. The aosp-devel AUR metapackage provides them all for simple installation.

Additionally, LineageOS requires the following packages: xml2 AUR , lzop , pngcrush , imagemagick . They can be installed with the lineageos-devel AUR metapackage.

The factual accuracy of this article or section is disputed.

Java Development Kit

The required JDK version depends on the Android version you are building:

  • For Android 9 (Pie) and up, Java is included with the Android source and no separate installation is needed.
  • For Android 7 and 8 (Nougat and Oreo), OpenJDK 8 is required, which is available with the jdk8-openjdk package.
  • For Android 5 and 6 (Lollipop and Marshmallow), OpenJDK 7 is required, which is available with the jdk7-openjdk package.

Set JAVA_HOME to avoid this requirement and match the Arch Linux installation path. Example:

This change will be valid only for the current terminal session.

Setting up the build environment

Create a directory to build.

The Android build process expects python to be python2. Prepend it to the PATH :

Alternatively, create a python2 virtual environment and activate it:

/android to reflect your build directory if different than above).

or (assuming build directory Data/Android_Build):

Downloading the source code

This will clone the repositories. You only need to do this the first time you build Android, or if you want to switch branches.

  • The repo has a -j switch that operates similarly to the one used with make . Since it controls the number of simultaneous downloads, you should adjust the value depending on downstream network bandwidth.
  • You will need to specify a branch (list of branches) to check out with the -b switch. If you leave the switch out, you will get the so-called master branch.

The -c switch will only sync the branch which is specified in the manifest, which in turn is determined by the branch specified with the -b switch, or the default branch set by the repository maintainer.

Wait a long time. Just the uncompiled source code, along with the .repo and .git directories that are used to keep track of it, are very large. As of Android 10, at least 250 GB of free disk space is required.

Building the code

This should do what you need for AOSP:

If you run lunch without arguments, it will ask what build you want to create. Use -j with a number between one and two times number of cores/threads.

Читайте также:  Android tv box h96 max 4gb 32gb

The build takes a very long time.

Testing the build

When finished, run/test the final image(s).

Creating a flashable Image

To create an image that can be flashed it is necessary to:

This will create a zip image under out/target/product/hammerhead (hammerhead being the device name) that can be flashed.

Flashing

In some cases, you want to return to the stock Android after flashing custom ROMs to your Android mobile device. For flashing instructions of your device, please use XDA forums.

Fastboot

Fastboot (as well as ADB) is included in the android-tools package.

Samsung devices

Samsung devices cannot be flashed using Fastboot tool. Alternatives are Heimdall and Odin (by using Windows and VirtualBox).

samloader

To download original Samsung firmware, a platform independent script, samloader can be used.

Heimdall

Heimdall is a cross-platform open-source tool suite used to flash firmware (also known as ROMs) onto Samsung mobile devices and is also known as an alternative to Odin. It can be installed as heimdall .

The flashing instructions can be found on Heimdall’s GitHub repository or on XDA forums.

Odin (Virtualbox)

It is also possible to restore firmware (Android) on the Samsung devices using Odin, but inside the VirtualBox.

Arch Linux (host) preparation:

  1. Install VirtualBox together with its extension pack and guest additions.
  2. Install your preferred, but compatible with Odin, Windows operating system (with VirtualBox guest additions) into a virtual hard drive using VirtualBox.
  3. Open VirtualBox settings of your Windows operating system, navigate to USB, then tick (or make sure it is ticked) Enable USB 2.0 (EHCI) Controller.
  4. At VirtualBox running Windows operating system, click in the menu bar Devices > USB Devices, then click on your Samsung mobile device from the list, which is connected to your computer via USB.

Windows (guest) preparation:

Check if configuration is working:

  1. Turn your device into Download mode and connect to your Linux machine.
  2. In virtual machine toolbar, select Devices > USB > . Samsung. device.
  3. Open Odin. The white box (a big one at the bottom-left side) named Message, should print a line similar to this:

which means that your device is visible to Odin & Windows operating system and is ready to be flashed.

Use Android on GNU/Linux

There are several projects and methods which support running Android on GNU/Linux:

  • Anbox: container-based software to run Android on Linux kernels
  • Android-x86: a direct port of Android for the x86 architecture

Troubleshooting

Android Studio: Android Virtual Devices show ‘failed to load’.

Make sure you have exported the variable ANDROID_HOME as explained in #Android Studio.

Android Studio: ‘failed to create the SD card’

If you try to run an AVD (Android Virtual Device) under x86_64 Arch and get the error above, install the lib32-gcc-libs package from the multilib repository.

Eclipse: During Debugging «Source not found»

Most probably the debugger wants to step into the Java code. As the source code of Android does not come with the Android SDK, this leads to an error. The best solution is to use step filters to not jump into the Java source code. Step filters are not activated by default. To activate them: Window > Preferences > Java > Debug > Step Filtering. Consider to select them all. If appropriate you can add the android.* package. See the forum post for more information: http://www.eclipsezone.com/eclipse/forums/t83338.rhtml

ValueError: unsupported pickle protocol

One fix is to issue:

If that does not work, then try this:

libGL error: failed to load driver: swrast OR AVD does not load and no error message displayed

Sometimes, beginning to load an AVD will cause an error message similar to this to be displayed, or the loading process will appear to finish but no AVD will load and no error message will be displayed.

The AVD loads an incorrect version of libstdc++, you can remove the folder libstdc++ from

/.android-sdk/emulator/lib64 (for 64-bit) or

/.android-sdk/emulator/lib (for 32-bit) , e.g.:

Note that in versions before Android Studio 3.0, this directory was in a different location:

Alternatively you can set and export ANDROID_EMULATOR_USE_SYSTEM_LIBS in

Fix for the .desktop file might be achieved by using env command, prefixing the Exec line Desktop entries#Modify environment variables

sh: glxinfo: command not found

Here is the full error:

You can try to install glxinfo ( mesa-utils ) but if your computer has enough power you could simply use software to render graphics. To do so, go to Tools > Android > AVD Manager, edit the AVD (click the pencil icon), then select Software — GLES 2.0 for Emulated Performance > Graphics.

Android Emulator: no keyboard input in xfwm4

In xfwm4, the vertical toolbar buttons window that is on the right of the emulator takes focus from the emulator and consumes keyboard events. (bug report)

You can use the workaround described in [3]:

  1. Open the xfwm4 settings.
  2. Switch to the Focus tab.
  3. Change the Focus Model to «Focus follow mouse».
  4. Disable Automatically raise windows when they receive focus option below.\

Android Emulator: Window is shaking and blinking when used in WM tiled mode

When using Tiled Window Manager like dwm, Android Emulator will shake and blink. You can use the workaround described in krohnkite issue 72 (window floating is induced by Alt+f in dwm).

Android Emulator: Segmentation fault (core dumped)

When using Nouveau drivers try to disable gpu hardware acceleration.

In some devices it can only be done by editing $HOME/.avd/device_name.avd/config.ini .[4]

  1. Set hw.gpu.enabled=no
  2. Set hw.gpu.mode=off

adb: sideload connection failed: insufficient permissions for device

If you get the error:

you might solve it by restarting the adb server:

Источник

Оцените статью