2013년 6월 19일 수요일

ODROID - Android Beta 1.8.0

1. Include XBox Controller kl, kcm.
2. Enable Netflix service.
3. Fix 1080P HDMI rotation issue.
4. If mouse.right.click property set "back", Mouse right click act back button(esc key).
5. If ro.sf.hwrotation is set, It effect rotation of HDMI Screen.
6. Fix not to root.
7. Mount USB Mass Storage automatically. (http://forum.odroid.com/viewtopic.php?f=14&t=1906&p=14016#p14016)
8. remove ODROID, FileManager, Ternmial app. add jackpal AndroidTerm, Ultra Explorer app.

https://www.dropbox.com/sh/d5zfj5z3mo0rohj/g7utJRzedt

Add init.d support to ODROID

Add init.d support to ODROID

create sysinit script device/hardkernel/proprietary/bin/sysinit

#!/system/bin/sh

export PATH=/sbin:/system/sbin:/system/bin:/system/xbin
/system/bin/logwrapper /system/xbin/run-parts /system/etc/init.d


edit device.mk

# init.d support
PRODUCT_COPY_FILES += \
     device/hardkernel/proprietary/bin/sysinit:system/bin/sysinit


edit init.odroidu2.rc

on boot
# Run sysinit
    start sysinit

...

# sysinit (/system/etc/init.d)
service sysinit /system/bin/sysinit
    user root
    oneshot


build android

why support init.d?

Must do 98netflix script for Netflix service.

2013년 6월 13일 목요일

OpenCV test on ODROID-X2.

Download OpenCV test app

http://sourceforge.net/projects/opencvlibrary/files/opencv-android/2.4.5/OpenCV-2.4.5-android-sdk.zip/download

import projects to eclipse.

OpenCV Library - 2.4.5
OpenCV Sample - face-detection

add NDKROOT variable

http://stackoverflow.com/questions/16328637/building-opencv-2-4-5-in-android-adt-ndk-build-not-found-in-path

fix preview parameters

JavaCameraView.java

params.setPreviewFormat(ImageFormat.NV21);
Log.d(TAG, "Set preview size to " + Integer.valueOf(640) + "x" + Integer.valueOf(480));
params.setPreviewSize((int)640, (int)480);
//Log.d(TAG, "Set preview size to " + Integer.valueOf((int)frameSize.width) + "x" + Integer.valueOf((int)frameSize.height));
//params.setPreviewSize((int)frameSize.width, (int)frameSize.height);



for MIPI Camera.

//params.setPreviewFormat(ImageFormat.NV21);
params.setPreviewFormat(ImageFormat.NV16);
Log.d(TAG, "Set preview size to " + Integer.valueOf(640) + "x" + Integer.valueOf(480));
params.setPreviewSize((int)640, (int)480);




2013년 6월 4일 화요일

How to Use WebCam(UVC) for ODROID-X/X2

1. Module UVC driver


--- V4L USB devices
<M>   USB Video Class (UVC)
[ ]     UVC input events device support
<M>   GSPCA based webcams  --->

2. make and copy zImage
$cp arch/arm/boot/zImage android/device/hardkernel/odroidx[x2]/kernel_sdmmc[emmc]

3. copy uvcvideo.ko
$cp driver/media/video/uvcvideo.ko android/device/hardkernel/proprietary/bin/

4. copy driver into "/system/lib/modules/" directory.
device.mk
#
# UVC Module
#
PRODUCT_COPY_FILES += \
    device/hardkernel/proprietary/bin/uvcvideo_x.ko:system/lib/modules/uvcvideo.ko

5. add service for module insert.
init.odroidx[x2][_realtek].rc

service uvc_usb_module /system/bin/insmod /system/lib/modules/uvcvideo.ko
    class core
    user root
    group root
    oneshot

6. select WebCam Camera library.
BoardConfig.mk
BOARD_CAMERA    := odroidx    //MIPI cameara
BOARD_CAMERA    := odroidu    //UVC

7. android build


2013년 5월 31일 금요일

Boot from system partition instead ramdisk for ODROID

mount eMMC or SDCard on PC.


Disk /dev/sde: 15.8 GB, 15758000128 bytes
255 heads, 63 sectors/track, 1915 cylinders, total 30777344 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sde1         6684672    30646271    11980800    c  W95 FAT32 (LBA)
/dev/sde2          131072     2228223     1048576   83  Linux
/dev/sde3         2228224     6422527     2097152   83  Linux
/dev/sde4         6422528     6684671      131072   83  Linux

Partition table entries are not in disk order
[~/projects/ssd/JellyBean/out/target/product/odroidx2]$

#mount system partition

[~/projects/ssd/JellyBean/out/target/product/odroidx2]$ sudo mount /dev/sde2 /media/microSD/

# copy ramdisk fs.

[~/projects/ssd/JellyBean/out/target/product/odroidx2]$ sudo cp -a root/ /media/microSD/

# change permissions

[~/projects/ssd/JellyBean/out/target/product/odroidx2]$ sudo chmod 644 /media/microSD/init.*
[~/projects/ssd/JellyBean/out/target/product/odroidx2]$ sudo chmod 644 /media/microSD/build.prop

and ODROID power up...

make boot.scr

edit boot.ini



  1 setenv v_out        "hdmi"
  2 setenv fake_fb      "false"
  3 setenv fb_x_res     "1360"
  4 setenv fb_y_res     "768"
  5 setenv hdmi_phy_res "1080"
  6 setenv led_blink    "1"
  7 setenv bootcmd      "movi read kernel 0 40008000;movi read rootfs 0 41000000 100000;bootm 40008000 41000000"
  8 setenv bootargs     "root=/dev/mmcblk0p2 ro rootfstype=ext4 init=/init rootdelay=1 console=/dev/ttySAC1,115200n8 androidboot.console=ttySAC1 v_out=${v_out} fake_fb=${fake_fb} fb_x_res=${fb_x_res} fb_y_res=${    fb_y_res} hdmi_phy_res=${hdmi_phy_res} led_blink=${led_blink}"
  9 boot


$./make_boot_scr.sh

$adb push boot.scr /sdcard/

$adb sync

$adb reboot

boot from system partition.


booting log


[    0.000000] sclk_fimd: source is xusbxti (1), rate is 1500000
[    0.000000] sclk_mfc: source is mout_mfc0 (0), rate is 55000000
[    0.000000] sclk_g3d: source is mout_g3d0 (0), rate is 55000000
[    0.000000] sclk_pwi: source is xusbxti (1), rate is 1500000
[    0.000000] PERCPU: Embedded 7 pages/cpu @c1af8000 s7008 r8192 d13472 u32768
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 519938
[    0.000000] Kernel command line: console=ttySAC1,115200n8 androidboot.console=ttySAC1 mem=2047M root=/dev/mmcblk0p2 ro rootfstype=ext4 init=/init rootdelay=1 console=/dev/ttySAC1,115200n8 androidboot.console=1
[    0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes)
[    0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
[    0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
[    0.000000] Memory: 2047MB = 2047MB total
[    0.000000] Memory: 1695464k/1695464k available, 400664k reserved, 1342464K highmem
[    0.000000] Virtual kernel memory layout:
[    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)


2013년 5월 30일 목요일

Update ODROID-X2 firmware and install GMS.

1. Download Android_Beta 1.6 firmware

http://com.odroid.com/sigong/nf_file_board/nfile_board_view.php?keyword=&tag=&bid=182

http://dn.odroid.com/Android_Beta_1.6/X2/emmc_installer_for_odroidx2.zip

2. write to SD Card.
sudo dd if=./emmc_installer_for_odroidx2.img of=/dev/sdx

or

ImageWriter

3. write to eMMC

4. success to install Android Beta 1.6 version


5. Download GMS apps.

Must download gapps-jb-20121011-signed.zip,




6. Download Astor File Manager apk and install




7. Make updater directory and move gapps-jb-20121011-singed.zip there.


8. Settings -> About tablet -> ODROID Update.





9. Update




10. Sing in  Google Account.



11. Download Android Beta 1.7 firmware




12. move odroidx2-ota-eng.codewalker.zip to updater directory.



13. Update


13. Reinstall GMS apps

go back step 7.

2013년 5월 21일 화요일

ethernet으로 Wi-Fi 연결 fake


ODROID에 Ethernet port가 있고 기본적으로 dhcp가 가능한 회선에 연결하면 Wi-Fi  연결되어 있지 않아도 인터넷이 가능합니다.

하지면 몇몇 app들은 Mobile Network 또는 Wi-Fi  연결만을 체크하도록 되어 있어서 실행이 안되는 경우가 있습니다.

Ethernet 연결을 Wi-Fi 연결로 사용하여 android에서 Wi-Fi  연결된것 처럼 만들고 싶은데 관련 자료를 못찾겠네요.

아래의 그림과 같이 android는 wlan0가 wpa_supplicant와 연결되어 있습니다. 여기서  wlan0에 eth0를 어떻게 연결할지 생각되는 시나리오 들입니다.

wlan0 -> wpa_supplicant->android

 ^                       ^
  | ?(route)        | ( wpa_supplicant -ieth0 -Dwired)?
eth0    --------->           

1. wpa_supplicant -ieth0 -Dwired 옵션으로 ethernet을 연결
- 단 wpa_supplicant가 두개가 존재해야 하고 서비스 역시 두개가 되어야 한네요.
(wpa_supplicnat -iwlan -Dwext)
- "-Dwired"가 동작하기 위해 wpa_supplicant가 BOARD_WPA_SUPPLICANT_DRIVER := WIRED로 동작 확인이 먼저 일 듯 합니다.


2. eth0을 route하여 wlan0에 연결 
- 하지만 wpa_supplicant 때문에 SSID등 연결된 상태로 만들기가 가능 할지 모르겠네요.

3. reverse tethering
- 이건 pc의 인터넷 연결을 USB(adb)로 스마트폰으로 연결해주는 기술인데 자세한 자료는 없고 howto만 보이네요. usb tethering apk 소스가 필요할 듯 합니다.
- 이건 기본적으로 eth0로 네트워크가 연결되어 있고 Wi-Fi 연결로 속일 수 없어서 안 될것 같은데 몇몇 동영상을 찾아 보면 3G Network 연결로 만드는 듯 하여 Wi-Fi가 아니라 Mobile Network로 연결된다면 가능할 것 같습니다.

MK802 란 모델이 위에 설명한 방법으로 Network이 구성이 된다고 합니다.


아래 주소에서 reverse tethering 소스를 구할 수 있습니다.
https://code.google.com/p/android-reverse-tethering/source/checkout