Posts mit dem Label nexus7 werden angezeigt. Alle Posts anzeigen
Posts mit dem Label nexus7 werden angezeigt. Alle Posts anzeigen

Montag, 29. Juli 2013

Update Nexus 7 to Android 4.3 manually without loosing data

Sometimes one has modified some system files and OTA is failing due to those modifications. The easiest way in that case would be to do the update manually by using the factory image. Unfortunately applying the factory image directly does a factory reset, so all data will be lost, but knowing the principles behind, you can go to the lastest Androis version without loosing your data.

Get the factory image from Google and extract the following files from it:
  • bootloader-grouper-4.23.img
  • boot.img
  • system.img
If you have root and want to keep it, get
- UPDATE-SuperSU-v1.51.zip
and copy it to /sdcard and be sure, that you have a custom recovery installed on your device.

Then do a nandroid backup before starting (it's always better to have it) and then do a

fastboot flash bootloader bootloader-grouper-4.23.img
fastboot reboot-bootloader
fastboot flash boot boot.img
fastboot flash system system.img

reboot into recovery and flash UPDATE-SuperSU-v1.51.zip

Do a reboot system and, congrats, you should be on Android 4.3 without loosing any data.

Dienstag, 19. Februar 2013

Native OTG USB disk support for Nexus 7 (WiFi) with Android 4.2.2

On XDA developers there was a discussion on native OTG USB stick support for the Nexus 7 and somebody provided also a patch which should enable this feature. Unfortunately he mixed up several things and the patch was not working. He was quite on a good way, but he missed some things, so I decided to dig around a bit to see how OTG-USB can be supported.

Since Android 4.2 the situation has become worse because of permissions and security changes and multi user support. The patch I am discribing here is not multi user compatible, i.e. all user will see all files on the external disk. So be warned if you want to use this feature.

First I want to describe a bit the modifications which need to be done to enable native OTG USB
  1. platform.xml is to be modified in such a way, that media_rw is allowed to access the external storage
    <permission name="android.permission.WRITE_EXTERNAL_STORAGE" >
       <group gid="sdcard_rw" />
       <group gid="media_rw" />
    </permission>
  2. vold.fstab is to be modified in such a way, that the usb is mounted automatically when the stick is plugged in
    # Mounts the first usable partition of the specified device
    dev_mount usbdisk /mnt/otg-usb auto /devices/platform/tegra-ehci.0
  3. init.grouper.rc is to be modified that on startup the mount directory is created
    on init
    ...
       mkdir /mnt/otg-usb 0777 sdcard_rw sdcard_rw
  4. storage_list.xml in framework-res.apk is to be modified that the external storage is added
    <!-- external USB OTG storage -->
    <storage android:mountPoint="/mnt/otg-usb"
       android:storageDescription="@string/storage_usb"
       android:primary="false"
       android:removable="true" />

As you can see on the different files to be modified, several components of the Android system are involved, i.e.
  • prepare a new ramdisk.img
  • prepare a new framework-res.apk
  • patch the platform.xml

I prepared an update.zip which applies the required modifications. The update.zip contains:
  • a new boot.img including my kernel (based on android-tegra3-grouper-3.1-jb-mr1.1, but I've added DM9601 and KSM support) and a ramdisk.img with the required modifications for the otg-usb support.
  • a patched framework-res.apk
  • a modified platform.xml

This update is compatible only with stock Android 4.2.2 (JDQ39) and it will break future OTA updates!
If you want to apply this patch, so be sure you know what you are doing and do it on your own risk. I am not responsible for any bricks, data loss, etc.
Please note: I've tested this only on the Nexus 7 (WiFi) and I am not sure, whether it will work on the GSM-version, too, even if I believe it should work, it's disabled in the updater script at the moment.

Another thing to note: Currently only vFAT partitions are recognized. NTFS principially is supported, but vold is not handling NTFS correctly and displays an empty filesystem / a partition to be formatted.

Update 21.02.2013: I've added a pached vold to the new otg-usb-enable-20130221.zip. Now it's possible to mount also NTFS filesystems, but read only at the moment.

Samstag, 16. Februar 2013

Using an Davicom 9601 based USB-Ethernet-Adapter with the Nexus 7

Some weeks ago I bought an USB ethernet adapter on Amazon. Unfortunately that adapter is not working with the Nexus 7, because the chipset is not supported by the kernel out of the box.
I found out, that the USB-Adapter (JP1082) is based on the Davicom 9601 chipset, which principally is supported by the linux kernel, so I decided to build a kernel which is supporting that adapter.

I did a git clone of the nexus 7 kernel sources from https://android.googlesource.com/kernel/tegra and a checkout of the latest kernel branch

git checkout android-tegra3-grouper-3.1-jb-mr1.1

after running

make ARCH=arm tegra3_android_defconfig

to create the default nexus kernel configuration the Davicom adapter needs to be added to the configuration by opening .config and changing the line

# CONFIG_USB_NET_DM9601 is not set

to

CONFIG_USB_NET_DM9601=y

Now the kernel is ready to be built:

make ARCH=arm zImage

after a successfull compilation the kernel can be booted by

fastboot boot arch/arm/boot/zImage

After booting the device and connecting the USB-ethernet adapter to the OTG-cable, you need to open a terminal window and call

/system/bin/dhcpcd eth0

to configure the ethernet link. That's all!

Freitag, 19. Oktober 2012

Nexus 7 partition sizes (16Gb model)

Partition NamePartition Descriptionby_nameSize in BlocksSize in MB
mmcblk0p1recoverySOS1228812
mmcblk0p2bootLNX81928
mmcblk0p3systemAPP665600650
mmcblk0p4cacheCAC453632443
mmcblk0p5miscMSC5120.5
mmcblk0p6stagingUSP1024010
mmcblk0p7provisionedPER51205
mmcblk0p8unknownMDA5120.5
mmcblk0p9userdataUDA1410355213773
mmcblk0boot020482
mmcblk0boot120482