Page 1 of 3 123 LastLast
Results 1 to 10 of 29

Thread: How to install adb for Android with Ubuntu

  1. #1
    Join Date
    Mar 2007
    Location
    Denver, CO
    Beans
    7,958
    Distro
    Ubuntu Mate 16.04 Xenial Xerus

    How to install adb for Android with Ubuntu

    This guide addresses how to install adb (Android Device Bridge) for Android Devices.

    This guide is currently written using Ubuntu 11.10. It will be updated periodically for changes within the Android SDK and any changes the would accompany future Ubuntu releases.

    This guide is directed for individuals interested in rooting their Android device or those interested in flashing custom ROMs, software development, or theme alterations or just about any other activity that would necessitate use of adb or fastboot for device modification.

    1. Install the Android SDK and Download the Platform Tools Package from within the Android SDK Manager

    Grab the Android SDK for linux: Google Android SDK

    Place the file within your home directory.
    Unpack the sdk within the your users home directory:
    Code:
    cd ~ 
    tar -zxvf android-sdk_r16-linux.tgz
    ***Android-sdk version number may vary depending on version of the SDK downloaded.


    Within the ~/android-sdk-linux/tools subfolder is an executable called android. Despite the non-descript name, the executable android is actually the Android SDK Manager. Launch the Android SDK Manager.
    Code:
    ./~/android-sdk-linux/tools/android
    Select Android SDK Tools and Android SDK Platform-tools.(Screen shot provided below). Any additional packages may be downloaded as well. Go grab a bite to eat!!

    The platform tools package contains both the adb and fastboot executables. These programs will be located within the newly created directoy ~/android-sdk-linux/platform-tools

    2. Modify your PATH environment variable to include the adb and fastboot executables.
    The PATH environment variable may be either modified within ~/.profile (or ~/.bash_profile) or within ~/.bashrc. (The ~/.profile file is read upon login for all interactive shells, and the ~/.bashrc file is read upon all non-interactive shells (i.e sftp). In most cases and by default the ~/.profile file imports all settings from the ~/.bashrc file). The PATH statemnt must be altered to include the /android-sdk-linux/tools and /android-sdk-linux/platform-tools directories.

    I modified my PATH statment within gedit by adding the following to the bottom of the ~/.bashrc file:
    Code:
    export PATH=${PATH}:${HOME}/android-sdk-linux/tools:${HOME}/android-sdk-linux/platform-tools
    3. Create udev rules for Ubuntu to correctly identify the device when it is plugged into the USB port

    This is the most difficult part of the entire process.
    First plug in the device to the usb port, then execute the following command:

    Code:
    lsusb
    This should produce output similar to the following:
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    Bus 001 Device 063: ID 04e8:6860 Samsung Electronics Co., Ltd

    In my working example, my device was correctly identified:
    Bus 001 Device 063: ID 04e8:6860 Samsung Electronics Co., Ltd

    The statement above can be deciphered:
    Bus 001 Device 063: This information helps us determine the name of the device node. The device node's name is: /dev/bus/usb/001/063
    04e8: The vendorID
    6860: The productID

    Using device node's name (/dev/bus/usb/001/063), its possible to query the device and discover its attributes. Discovery of these attributes is necessary since udev matches the device based on specific criteria. We need to right a ruleset that udev can use to match the device. The first step of this process is discovering criteria that can be plugged into our ruleset. This can be done in one of two ways, each are acceptable. The output of either of these methods generates the information for us to construct the udev rule for the device. The query program we are using for this method is known as udevadm

    Query Method #1
    Code:
    udevadm info -q all -n <name of device node>
    In my particular situation, the name of my device node is: /dev/bus/usb/001/063, so hence my command would be:
    udevadm info -q all -n /dev/bus/usb/001/063

    This gives output similar to the following:
    $ udevadm info -q all -n /dev/bus/usb/001/063
    P: /devices/pci0000:00/0000:00:1d.7/usb1/1-8
    N: bus/usb/001/063
    S: libmtp-1-8
    S: GalaxyNexus
    E: UDEV_LOG=3
    E: DEVPATH=/devices/pci0000:00/0000:00:1d.7/usb1/1-8
    E: MAJOR=189
    E: MINOR=62
    E: DEVNAME=/dev/bus/usb/001/063
    E: DEVTYPE=usb_device
    E: DRIVER=usb
    E: PRODUCT=4e8/6860/216
    E: TYPE=0/0/0
    E: BUSNUM=001
    E: DEVNUM=063
    E: SUBSYSTEM=usb
    E: ID_MTP_DEVICE=1
    E: ID_MEDIA_PLAYER=samsung_galaxy-s2
    E: ID_VENDOR=samsung
    E: ID_VENDOR_ENC=samsung
    E: ID_VENDOR_ID=04e8
    E: ID_MODEL=Galaxy
    E: ID_MODEL_ENC=Galaxy
    E: ID_MODEL_ID=6860
    E: ID_REVISION=0216
    E: ID_SERIAL=samsung_Galaxy_0146B06501005018
    E: ID_SERIAL_SHORT=0146B06501005018
    E: ID_BUS=usb
    E: ID_USB_INTERFACES=:ffff00:ff4201:
    E: DEVLINKS=/dev/libmtp-1-8 /dev/GalaxyNexus
    E: TAGS=:udev-acl:

    Criteria that we will be using for matching are those lines starting with E: - E=ENV=Device Property value


    Query Method #2

    Code:
    udevadm info -a -p $(udevadm info -q path -n <name of device node>)
    In my particular situation, the name of my device node is: /dev/bus/usb/001/063, so hence my command would be:
    udevadm info -a -p $(udevadm info -q path -n /dev/bus/usb/001/063)

    This command gives output similar to:

    $ udevadm info -a -p $(udevadm info -q path -n /dev/bus/usb/001/063)

    Udevadm info starts with the device specified by the devpath and then
    walks up the chain of parent devices. It prints for every device
    found, all possible attributes in the udev rules key format.
    A rule to match, can be composed by the attributes of the device
    and the attributes from one single parent device.

    looking at device '/devices/pci0000:00/0000:00:1d.7/usb1/1-8':
    KERNEL=="1-8"
    SUBSYSTEM=="usb"
    DRIVER=="usb"
    ATTR{configuration}==""
    ATTR{bNumInterfaces}==" 2"
    ATTR{bConfigurationValue}=="1"
    ATTR{bmAttributes}=="80"
    ATTR{bMaxPower}=="500mA"
    ATTR{urbnum}=="29"
    ATTR{idVendor}=="04e8"
    ATTR{idProduct}=="6860"
    ATTR{bcdDevice}=="0216"
    ATTR{bDeviceClass}=="00"
    ATTR{bDeviceSubClass}=="00"
    ATTR{bDeviceProtocol}=="00"
    ATTR{bNumConfigurations}=="1"
    ATTR{bMaxPacketSize0}=="64"
    ATTR{speed}=="480"
    ATTR{busnum}=="1"
    ATTR{devnum}=="63"
    ATTR{devpath}=="8"
    ATTR{version}==" 2.00"
    ATTR{maxchild}=="0"
    ATTR{quirks}=="0x0"
    ATTR{avoid_reset_quirk}=="0"
    ATTR{authorized}=="1"
    ATTR{manufacturer}=="samsung"
    ATTR{product}=="Galaxy"
    ATTR{serial}=="0146B06501005018"

    looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb1':
    KERNELS=="usb1"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{configuration}==""
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bmAttributes}=="e0"
    ATTRS{bMaxPower}==" 0mA"
    ATTRS{urbnum}=="1403"
    ATTRS{idVendor}=="1d6b"
    ATTRS{idProduct}=="0002"
    ATTRS{bcdDevice}=="0300"
    ATTRS{bDeviceClass}=="09"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{speed}=="480"
    ATTRS{busnum}=="1"
    ATTRS{devnum}=="1"
    ATTRS{devpath}=="0"
    ATTRS{version}==" 2.00"
    ATTRS{maxchild}=="8"
    ATTRS{quirks}=="0x0"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{authorized}=="1"
    ATTRS{manufacturer}=="Linux 3.0.0-14-generic ehci_hcd"
    ATTRS{product}=="EHCI Host Controller"
    ATTRS{serial}=="0000:00:1d.7"
    ATTRS{authorized_default}=="1"

    looking at parent device '/devices/pci0000:00/0000:00:1d.7':
    KERNELS=="0000:00:1d.7"
    SUBSYSTEMS=="pci"
    DRIVERS=="ehci_hcd"
    ATTRS{vendor}=="0x8086"
    ATTRS{device}=="0x27cc"
    ATTRS{subsystem_vendor}=="0x103c"
    ATTRS{subsystem_device}=="0x3010"
    ATTRS{class}=="0x0c0320"
    ATTRS{irq}=="20"
    ATTRS{local_cpus}=="ff"
    ATTRS{local_cpulist}=="0-7"
    ATTRS{dma_mask_bits}=="32"
    ATTRS{consistent_dma_mask_bits}=="32"
    ATTRS{broken_parity_status}=="0"
    ATTRS{msi_bus}==""
    ATTRS{companion}==""

    looking at parent device '/devices/pci0000:00':
    KERNELS=="pci0000:00"
    SUBSYSTEMS==""
    DRIVERS==""

    Criteria that we will be using for matching are those lines starting with ATTRS -- ATTRS-Device Attributes

    Using either ENV or ATTRS, we can construct a ruleset for udev. Full information how to construct rules can be found here, I'll provide examples on how to use the criteria to construct the ruleset.

    By arbitrary convention, the ruleset file will be called 51-android.rules.
    Code:
    gksu gedit /etc/udev/rules.d/51-android.rules
    The following are examples of rulesets that can be placed within the file (only one(1) ruleset is needed - Each should be only 1 line):
    SUBSYSTEM=="usb", ENV{ID_VENDOR_ID}=="04e8", ENV{ID_MODEL}=="Galaxy", MODE="0666", SYMLINK+="GalaxyNexus"

    SUBSYSTEM=="usb", ENV{ID_VENDOR_ID}=="04e8", ENV{ID_MODEL_ID}=="6860", MODE="0666", SYMLINK+="GalaxyNexus"

    SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", ATTR{idProduct}=="6860", ATTR{product}=="Galaxy" MODE="0666", SYMLINK+="GalaxyNexus"

    As written above, these rules which listed matching criteria (SUBSYSTEM, ENV,ATTR) will only modify the mode of the device (0666=rw-rw-rw-) and create the symbolic GalaxyNexus link at /dev/GalaxyNexus. Additional actions however can be assigned to the device, such as activities to perform when the device is plugged in, or removed. These activites could be specified as follows:
    ACTION=="add", RUN+="<name of action>"
    ACTION==”remove”, RUN+="<name of action>"

    **IMPORTANT**
    • Each ACTION statement must be listed on its own line.
    • The path to the program must be the full qualified path.
    • There may also be multiple action lines or multiple add/remove statements
    .

    Example:
    ACTION=="add", RUN+="/usr/local/bin/NexusMount.sh"
    ACTION==”remove”, RUN+="/usr/local/bin/NexusUnmount.sh"

    It would be possible for example to play a sound or .mp3 file when the device is inserted or ejected (similar to windows).

    Once done constructing the rule, save the /etc/udev/rules.d/51-android.rules file.

    Testing the ruleset
    Its often a good idea to test the ruleset before executing it. Its very easy to make errors writing the ruleset so I would encourage this simple process to verify the ruleset is correct. This can be done using the udevadm tool.

    Code:
    udevadm test --action=<"Copy entire ruleset here"> <path to device node>
    The ruleset is the contents of the entire 51-android.rules file.
    The path to the device node can be discovered using:
    udevadm info -q path -n d=<device name>
    In the example above the name of my device was: /dev/bus/usb/001/063 (Which was discovered using the lsusb statement).

    Putting this altogether as an example:
    udevadm test --action="SUBSYSTEM=="usb", ENV{ID_VENDOR_ID}=="04e8", ENV{ID_MODEL}=="Galaxy" MODE="0666", SYMLINK+="GalaxyNexus"" $(udevadm info -q path -n /dev/bus/usb/001/063)

    Although the output is rather long, two lines in the output correctly identify the ruleset actions are to be applied correctly:
    udev_rules_apply_to_event: MODE 0666 /etc/udev/rules.d/51-android.rules:1
    udev_rules_apply_to_event: LINK 'GalaxyNexus' /etc/udev/rules.d/51-android.rules:1

    Once verifying the ruleset is correct, restart the udev service:
    Code:
    sudo service udev restart
    4. Log out and then log back into computer.
    With the device plugged in, adb should work similar to the following:
    $ adb devices
    List of devices attached
    0146B06501005018 device

    fastboot can also be ran, however this is only valid if the device has booted into fastboot mode:
    $ fastboot devices
    ???????????? fastboot

    ***References
    Attached Images Attached Images

  2. #2
    Join Date
    Feb 2010
    Location
    QLD, Australia
    Beans
    497
    Distro
    Kubuntu 12.04 Precise Pangolin

    Re: How to install adb for Android with Ubuntu

    This is a great tutorial and so far so good, I am however stuck on one small little issue. I'm not sure what to put in the rule set for the "SYMLINK+="?

    Here is my following out put information;
    Code:
    jonny@jonny-laptop:~$ lsusb
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    Bus 002 Device 002: ID 05e3:0606 Genesys Logic, Inc. USB 2.0 Hub / D-Link DUB-H4 USB 2.0 Hub
    Bus 002 Device 003: ID 04f3:0230 Elan Microelectronics Corp. 3D Optical Mouse
    Bus 002 Device 004: ID 04f2:0111 Chicony Electronics Co., Ltd KU-9908 Keyboard
    Bus 002 Device 005: ID 152d:2338 JMicron Technology Corp. / JMicron USA Technology Corp. JM20337 Hi-Speed USB to SATA & PATA Combo Bridge
    Bus 002 Device 006: ID 19d2:0112 ZTE WCDMA Technologies MSM
    Code:
    jonny@jonny-laptop:~$ udevadm info -q all -n /dev/bus/usb/002/006
    P: /devices/pci0000:00/0000:00:1d.7/usb2/2-3
    N: bus/usb/002/006
    E: BUSNUM=002
    E: DEVNAME=/dev/bus/usb/002/006
    E: DEVNUM=006
    E: DEVPATH=/devices/pci0000:00/0000:00:1d.7/usb2/2-3
    E: DEVTYPE=usb_device
    E: DRIVER=usb
    E: ID_BUS=usb
    E: ID_MODEL=ZTE_HSUSB_Device
    E: ID_MODEL_ENC=ZTE\x20HSUSB\x20Device
    E: ID_MODEL_ID=0112
    E: ID_REVISION=0100
    E: ID_SERIAL=ZTE_Incorporated_ZTE_HSUSB_Device
    E: ID_USB_INTERFACES=:ffffff:
    E: ID_VENDOR=ZTE_Incorporated
    E: ID_VENDOR_ENC=ZTE\x20Incorporated
    E: ID_VENDOR_ID=19d2
    E: MAJOR=189
    E: MINOR=133
    E: PRODUCT=19d2/112/100
    E: SUBSYSTEM=usb
    E: TYPE=0/0/0
    E: UDEV_LOG=3
    E: USEC_INITIALIZED=1783943325
    Code:
    jonny@jonny-laptop:~$ udevadm info -a -p $(udevadm info -q path -n /dev/bus/usb/002/006)
    
    Udevadm info starts with the device specified by the devpath and then
    walks up the chain of parent devices. It prints for every device
    found, all possible attributes in the udev rules key format.
    A rule to match, can be composed by the attributes of the device
    and the attributes from one single parent device.
    
      looking at device '/devices/pci0000:00/0000:00:1d.7/usb2/2-3':
        KERNEL=="2-3"
        SUBSYSTEM=="usb"
        DRIVER=="usb"
        ATTR{configuration}==""
        ATTR{bNumInterfaces}==" 1"
        ATTR{bConfigurationValue}=="1"
        ATTR{bmAttributes}=="a0"
        ATTR{bMaxPower}=="500mA"
        ATTR{urbnum}=="9"
        ATTR{idVendor}=="19d2"
        ATTR{idProduct}=="0112"
        ATTR{bcdDevice}=="0100"
        ATTR{bDeviceClass}=="00"
        ATTR{bDeviceSubClass}=="00"
        ATTR{bDeviceProtocol}=="00"
        ATTR{bNumConfigurations}=="1"
        ATTR{bMaxPacketSize0}=="64"
        ATTR{speed}=="480"
        ATTR{busnum}=="2"
        ATTR{devnum}=="6"
        ATTR{devpath}=="3"
        ATTR{version}==" 2.00"
        ATTR{maxchild}=="0"
        ATTR{quirks}=="0x0"
        ATTR{avoid_reset_quirk}=="0"
        ATTR{authorized}=="1"
        ATTR{manufacturer}=="ZTE Incorporated"
        ATTR{product}=="ZTE HSUSB Device"
    
      looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb2':
        KERNELS=="usb2"
        SUBSYSTEMS=="usb"
        DRIVERS=="usb"
        ATTRS{configuration}==""
        ATTRS{bNumInterfaces}==" 1"
        ATTRS{bConfigurationValue}=="1"
        ATTRS{bmAttributes}=="e0"
        ATTRS{bMaxPower}=="  0mA"
        ATTRS{urbnum}=="46"
        ATTRS{idVendor}=="1d6b"
        ATTRS{idProduct}=="0002"
        ATTRS{bcdDevice}=="0302"
        ATTRS{bDeviceClass}=="09"
        ATTRS{bDeviceSubClass}=="00"
        ATTRS{bDeviceProtocol}=="00"
        ATTRS{bNumConfigurations}=="1"
        ATTRS{bMaxPacketSize0}=="64"
        ATTRS{speed}=="480"
        ATTRS{busnum}=="2"
        ATTRS{devnum}=="1"
        ATTRS{devpath}=="0"
        ATTRS{version}==" 2.00"
        ATTRS{maxchild}=="6"
        ATTRS{quirks}=="0x0"
        ATTRS{avoid_reset_quirk}=="0"
        ATTRS{authorized}=="1"
        ATTRS{manufacturer}=="Linux 3.2.0-24-generic-pae ehci_hcd"
        ATTRS{product}=="EHCI Host Controller"
        ATTRS{serial}=="0000:00:1d.7"
        ATTRS{authorized_default}=="1"
    
      looking at parent device '/devices/pci0000:00/0000:00:1d.7':
        KERNELS=="0000:00:1d.7"
        SUBSYSTEMS=="pci"
        DRIVERS=="ehci_hcd"
        ATTRS{vendor}=="0x8086"
        ATTRS{device}=="0x2836"
        ATTRS{subsystem_vendor}=="0x1025"
        ATTRS{subsystem_device}=="0x0136"
        ATTRS{class}=="0x0c0320"
        ATTRS{irq}=="23"
        ATTRS{local_cpus}=="ff"
        ATTRS{local_cpulist}=="0-7"
        ATTRS{dma_mask_bits}=="32"
        ATTRS{consistent_dma_mask_bits}=="32"
        ATTRS{broken_parity_status}=="0"
        ATTRS{msi_bus}==""
        ATTRS{companion}==""
        ATTRS{uframe_periodic_max}=="100"
    
      looking at parent device '/devices/pci0000:00':
        KERNELS=="pci0000:00"
        SUBSYSTEMS==""
        DRIVERS==""
    And so far this is what I have for my ruleset;
    Code:
    SUBSYSTEM=="usb", ENV{ID_VENDOR_ID}=="19d2", ENV{ID_MODEL}=="ZTE_HSUSB_Device", MODE="0666", SYMLINK+=" "
    
    SUBSYSTEM=="usb", ENV{ID_VENDOR_ID}=="19d2", ENV{ID_MODEL_ID}=="0112", MODE="0666", SYMLINK+=" "
    
    SUBSYSTEM=="usb", ATTR{idVendor}=="19d2", ATTR{idProduct}=="6860", ATTR{product}=="ZTE HSUSB Device"" MODE="0666", SYMLINK+=" "
    could someone please check over all of this and help me out? I really need to get this working so that I can attempted to fix my phone that is no longer working.
    Last edited by Jonny87; May 19th, 2012 at 03:20 AM.
    Ubuntu 16.04 / Linux 18
    “To mess up a Linux box, you need to work at it; to mess up your Windows
    box, you just need to work on it”.

  3. #3
    Join Date
    Feb 2010
    Location
    QLD, Australia
    Beans
    497
    Distro
    Kubuntu 12.04 Precise Pangolin

    Re: How to install adb for Android with Ubuntu

    OK I think I have it worked out but my phone still won't show in the adb devices.

    Any help please?
    Ubuntu 16.04 / Linux 18
    “To mess up a Linux box, you need to work at it; to mess up your Windows
    box, you just need to work on it”.

  4. #4
    Join Date
    May 2012
    Beans
    5

    Post Re: How to install adb for Android with Ubuntu

    If you're trying to run adb from a shell why don't you just:
    Code:
    cd <android-sdk directory>
    Code:
    cd platform-tools
    Code:
    ./adb kill-server
    Code:
    ./adb start-server
    Code:
    ./adb shell
    I you see a # sign then you're in.

  5. #5
    Join Date
    Jul 2010
    Location
    /run/shm
    Beans
    820
    Distro
    Ubuntu 20.04 Focal Fossa

    Re: How to install adb for Android with Ubuntu

    Won't it be easier to just use the Vendor ID without the Model, Device ID and Symlink?

    I use this 51-android.rules list and it works ideally for me.
    Code:
    SUBSYSTEM=="usb", ATTRS{idVendor}=="0409", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="0471", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="0482", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="0489", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="04da", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="04dd", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="04e8", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="0502", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="05c6", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="091e", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="0930", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="0955", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="0b05", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="0bb4", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="0fce", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="1004", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="109b", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="10a9", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="12d1", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="17ef", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="18d1", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="19d2", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="1d4d", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="1f53", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="2080", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="2116", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="2207", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="2257", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="22b8", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="24e3", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="413c", MODE="0660", GROUP="plugdev"
    Most IDs are taken from here.
    Quote Originally Posted by Linus Torvalds
    "Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program."

  6. #6
    Join Date
    Feb 2010
    Location
    QLD, Australia
    Beans
    497
    Distro
    Kubuntu 12.04 Precise Pangolin

    Re: How to install adb for Android with Ubuntu

    Quote Originally Posted by rmjones85 View Post
    If you're trying to run adb from a shell why don't you just:
    Code:
    cd <android-sdk directory>
    Code:
    cd platform-tools
    Code:
    ./adb kill-server
    Code:
    ./adb start-server
    Code:
    ./adb shell
    I you see a # sign then you're in.
    "./adb shell" didn't work.
    Ubuntu 16.04 / Linux 18
    “To mess up a Linux box, you need to work at it; to mess up your Windows
    box, you just need to work on it”.

  7. #7
    Join Date
    Feb 2010
    Location
    QLD, Australia
    Beans
    497
    Distro
    Kubuntu 12.04 Precise Pangolin

    Re: How to install adb for Android with Ubuntu

    Quote Originally Posted by Lisiano View Post
    Won't it be easier to just use the Vendor ID without the Model, Device ID and Symlink?

    I use this 51-android.rules list and it works ideally for me.
    Code:
    SUBSYSTEM=="usb", ATTRS{idVendor}=="0409", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="0471", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="0482", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="0489", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="04da", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="04dd", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="04e8", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="0502", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="05c6", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="091e", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="0930", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="0955", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="0b05", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="0bb4", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="0fce", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="1004", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="109b", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="10a9", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="12d1", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="17ef", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="18d1", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="19d2", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="1d4d", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="1f53", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="2080", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="2116", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="2207", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="2257", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="22b8", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="24e3", MODE="0660", GROUP="plugdev"
    SUBSYSTEM=="usb", ATTRS{idVendor}=="413c", MODE="0660", GROUP="plugdev"
    Most IDs are taken from here.
    Will give your method a try in case it works better. I still couldn't get it working on adb devices but managed to get it to sho up under fastboot. will try your method though.
    Ubuntu 16.04 / Linux 18
    “To mess up a Linux box, you need to work at it; to mess up your Windows
    box, you just need to work on it”.

  8. #8
    Join Date
    Mar 2007
    Location
    Denver, CO
    Beans
    7,958
    Distro
    Ubuntu Mate 16.04 Xenial Xerus

    Re: How to install adb for Android with Ubuntu

    adb list-devices

    This command should list your device attached. If no device is listed the adb shell command isn't going to work. You should also ideally add the platform tools directory to your PATH statement.

    Your SYMLINK+= statement can be anything. It just makes a symbolic link to the device at /dev/SYMLINK so it can be accessed. This is a symbolic link to the actual device node which is /dev/bus/usb/..... it's not a totally necessary however it just makes mounting easier.
    Last edited by kevdog; May 22nd, 2012 at 05:24 AM.

  9. #9
    Join Date
    Apr 2005
    Location
    Saskatoon, Canada
    Beans
    45
    Distro
    Ubuntu 12.04 Precise Pangolin

    Re: How to install adb for Android with Ubuntu

    If my phone is stuck in fastboot mode will these commands work to fix it once I install adb?

    "fast boot mode started udc_start()"

    fastboot erase recovery

    fastboot flash recovery recovery.img

    fastboot reboot
    Phenom X4 Quad Core 9950 Black Editon, Geforce 8800GT

  10. #10
    Join Date
    May 2012
    Beans
    7

    Re: How to install adb for Android with Ubuntu

    Quote Originally Posted by darrenn View Post
    If my phone is stuck in fastboot mode will these commands work to fix it once I install adb?

    "fast boot mode started udc_start()"

    fastboot erase recovery

    fastboot flash recovery recovery.img

    fastboot reboot
    =====================================

    I've successfully posted as:

    List of devices attached
    (Shows Device Number) device

    How would I go about updating the baseband of a phone from this point?
    I'm using terminal, in hopes that I can simply
    #push V20G_00.kdz.
    (Note: this was also posted in xda forums. Getting perspective from both Android and Linux Devs.)

Page 1 of 3 123 LastLast

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •