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
2013년 6월 19일 수요일
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
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
# 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);
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
--- 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)
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,
10. Sing in Google Account.
go back step 7.
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
11. Download Android Beta 1.7 firmware
12. move odroidx2-ota-eng.codewalker.zip to updater directory.
13. Update
13. Reinstall GMS apps
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
피드 구독하기:
글 (Atom)