레이블이 odroid인 게시물을 표시합니다. 모든 게시물 표시
레이블이 odroid인 게시물을 표시합니다. 모든 게시물 표시

2017년 4월 21일 금요일

ODROID-C2를 CCTV로 활용하기

ODROID-C2와 Webcam을 이용하여 CCTV를 만들어 보자.

http://www.hardkernel.com/main/products/prdt_info.php?g_code=G145457216438



안드로이드 최신 버전을 다운 받는다.
http://odroid.com/dokuwiki/doku.php?id=en:c2_release_android

eMMC나 sdcard에 설치 한다.

안드로이드가 부팅이 되면 Google Apps를 설치한다.
https://codewalkerster.blogspot.kr/2016/06/how-to-install-google-play-store-on.html

Goolge Market이 설치되었으면 Google 계정을 넣고 market에서 CCTV로 검색하여 Alfred를 설치한다.

https://play.google.com/store/apps/details?id=com.ivuu


Viewer로 볼 smartphone에도 alfred를 설치한다.
ODROID-C2에 Alfred는 Camera로 설정하자.


 아래와 같이 어항을 바라보게 Webcam을 설치하였다.


Smartphone에서 아래와 같이 볼 수 있다.




2017년 3월 7일 화요일

How to Enable Multi-Window in Marshmallow.

Go back to Settings > Developer Options > go to the bottom of the Drawing category and enable Multi-window from the options.



Enable multi-window on ODROID-C2.

2017년 2월 28일 화요일

How to write to external storage on odroid(marshmallow android 6.0.1).

You maybe install utorrent app, but you can't download torrent file in external storage installed android 6.0.1(marshmallow).


Edit packages.xml.

$ su
# vi /data/system/packages.xml

<package name="com.utorrent.client" codePath="/data/app/com.utorrent.client-1" nativeLibraryPath="/data/app/com.utorrent.client-1/lib" primaryCpuAbi="armeabi-v7a" publicFlags="940097092" privateFlags="0" ft="15a648b6388" it="15a648b6f1f" ut="15a648b6f1f" version="245" userId="10069" installer="com.android.vending">
        ...
        <perms>
            ...
            <item name="android.permission.ACCESS_WIFI_STATE" granted="true" flags="0" />
            <item name="android.permission.WAKE_LOCK" granted="true" flags="0" />
            <item name="android.permission.WRITE_MEDIA_STORAGE" granted="true" flags="0" />
        </perms>


or hacking frameworks.


diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java
index 647c17b..1ec1fe7 100644
--- a/services/core/java/com/android/server/pm/Settings.java
+++ b/services/core/java/com/android/server/pm/Settings.java
@@ -22,6 +22,7 @@ import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DISABLED
 import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER;
 import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_ENABLED;
 import static android.Manifest.permission.READ_EXTERNAL_STORAGE;
+import static android.Manifest.permission.WRITE_MEDIA_STORAGE;
 import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS;
 import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_NEVER;
 import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED;
@@ -1935,6 +1936,8 @@ final class Settings {
             return;
         }

+        boolean isMediaStoragePermission = false;
+
         serializer.startTag(null, TAG_PERMISSIONS);

         for (PermissionState permissionState : permissionStates) {
@@ -1943,6 +1946,19 @@ final class Settings {
             serializer.attribute(null, ATTR_GRANTED, String.valueOf(permissionState.isGranted()));
             serializer.attribute(null, ATTR_FLAGS, Integer.toHexString(permissionState.getFlags()));
             serializer.endTag(null, TAG_ITEM);
+
+            if (!isMediaStoragePermission
+                    && permissionState.getName().equals(WRITE_MEDIA_STORAGE)) {
+                isMediaStoragePermission = true;
+            }
+        }
+
+        if (!isMediaStoragePermission) {
+            serializer.startTag(null, TAG_ITEM);
+            serializer.attribute(null, ATTR_NAME, WRITE_MEDIA_STORAGE);
+            serializer.attribute(null, ATTR_GRANTED, "true");
+            serializer.attribute(null, ATTR_FLAGS, Integer.toHexString(0));
+            serializer.endTag(null, TAG_ITEM);
         }

         serializer.endTag(null, TAG_PERMISSIONS);

Automatically permission string is inserted in packages.xml.


After install app from Market you must reboot system.


2017년 1월 4일 수요일

How to use GPIO key in ODROID-C2(android).

How to use GPIO key in ODROID-C2(android).



Builtin GPIO polled driver.

CONFIG_KEYBOARD_GPIO_POLLED

linux keycode table

http://www.comptechdoc.org/os/linux/howlinuxworks/linux_hlkeycodes.html

F76541 c165[18~ 1b 5b 31 38 7e[31~ 1b 5b 33 31 7e[18~ 1b 5b 31 38 7e
F86642 c266[19~ 1b 5b 31 39 7e[32~ 1b 5b 33 32 7e[19~ 1b 5b 31 39 7e
F96743 c367[20~ 1b 5b 32 30 7e[33~ 1b 5b 33 33 7e[20~ 1b 5b 32 30 7e
F106844 c468[21~ 1b 5b 32 31 7e[34~ 1b 5b 33 34 7e[21~ 1b 5b 32 32 7e

Expansion Connectors

http://odroid.com/dokuwiki/doku.php?id=en:c2_hardware#expansion_connectors


https://github.com/hardkernel/linux/commit/6c5f6929b5f351d54929b6ba3921db7d48115a4f

edit arch/arm64/boot/dts/meson64_odroidc2.dts

gpio_keys_polled {
compatible =
"gpio-keys-polled";
#address-cells = <1>;
#size-cells = <0>;
poll-interval = <100>;
autorepeat;
button@1 {
label = "GPIO Key F7";
linux,code = <65>;
gpios = <&gpio GPIOX_19 1>;
};
button@2 {
label = "GPIO Key F8";
linux,code = <66>;
gpios = <&gpio GPIOX_11 1>;
};
button@3 {
label = "GPIO Key F9";
linux,code = <67>;
gpios = <&gpio GPIOX_9 1>;
};
button@4 {
label = "GPIO Key F10";
linux,code = <68>;
gpios = <&gpio GPIOX_7 1>;
};
};

$ cd kernel
$ make odroidc2_defconfig
$ make -j8
$ adb reboot fastboot
$ fastboot flash dtb arch/arm64/boot/dts/meson64_odroidc2.dtb




You can receive key event(scancode) without keycode.

https://github.com/codewalkerster/android_device_hardkernel_odroidc2/commit/7b49c29162c884491df262a3ec3d96f08942e231

Add keycode in system/usr/keylayout/Vendor_0001_Product_0001.kl.

key 75 F3
key 76 F4
key 77 F5
key 64 F6
key 65 F7
key 66 F8
key 67 F9
key 68 F10
key 69 F11


Android will fill keycode matched scancode in key event.

2016년 12월 28일 수요일

How to switch front/back camera on ODROID


ODROID-C2 lollipop support USB Webcam like front camera.

The camera preview is mirrored.




You can switch it back camera.

$ su
# mount -o rw,remount /system
# vi /system/build.prop

add this
rw.camera.usb.faceback=true

save and reboot system.
The camera preview is not mirrored.

2016년 12월 16일 금요일

How to install apps into SD card on ODROID-C2 marshmallow.

Install android 6.0.1 into 8GByte eMMC.
5GByte userdata.


Install many apps.


storage space running out.


Insert SD Card.


Use as internal storage.





Enable sdcard like internal storage.


Settings -> Apps -> Storage


Move "Angry Birds" to "SanDisk SD card".


2016년 11월 25일 금요일

overclock CPU and DDR clock for ODROID-C2

1. CPU 1.5GHz, DDR Clock 912MHz


2. CPU 1.7GHz, DDR Clock 912MHz

http://odroid.com/dokuwiki/doku.php?id=en:c2_set_cpu_freq

open boot.ini.


# setenv max_freq "2016"  # 2.016GHz
# setenv max_freq "1944"  # 1.944GHz
# setenv max_freq "1944"  # 1.944GHz
# setenv max_freq "1920"  # 1.920GHz
# setenv max_freq "1896"  # 1.896GHz
setenv max_freq "1752"  # 1.752GHz
# setenv max_freq "1680"  # 1.680GHz
# setenv max_freq "1656"  # 1.656GHz
#setenv max_freq "1536"  # 1.536GHz





3. CPU 1.7GHz, DDR Clock 1104MHz

http://odroid.com/dokuwiki/doku.php?id=en:c2_adjust_ddrclk

# su
# mount -o rw,remount /
# wget http://dn.odroid.com/S905/BootLoader/ODROID-C2/c2_update_ddrclk_android.sh
# chmod 755 ./c2_update_ddrclk_android.sh
# ./c2_update_ddrclk_android.sh 1104
# reboot


2016년 10월 25일 화요일

How to enable YouTube quality 720P on ODROID.

If you use ODROID-C1+ version 4.4.x, You can't watch higher than 360P quality in YouTube.


Open Terminal app and edit build.prop


$ su
# mount -o rw,remount /
# vi /build.prop

ro.build.version.release=4.4.2 -> ro.build.version.release=5



Save and reboot.

Now enable 720p quality.


2016년 10월 19일 수요일

How to access internet by Bluetooth tethering on ODROID without Wi-Fi network.

1. Turn on Bluetooth tethering on Your smartphone

2. edit /init.odroid2.rc
$ su
# mount -o rw,remount /
# vi /init.odroid2.rc

Add service dhcpcd_bt-pan

diff --git a/init.odroidc2.rc b/init.odroidc2.rc
index 92362aa..5adf868 100644
--- a/init.odroidc2.rc
+++ b/init.odroidc2.rc
@@ -417,6 +417,11 @@ service dhcpcd_p2p /system/bin/dhcpcd -aABKL
     disabled
     oneshot

+service dhcpcd_bt-pan /system/bin/dhcpcd -ABKL
+    class main
+    disabled
+    oneshot
+
 service iprenew_wlan0 /system/bin/dhcpcd -n
     class main
     disabled

#reboot

3. Turn on Bluetooth on ODROID-C2.


4. Check 'Internet access'


5. Now enable to access internet without Wi-Fi network.




2016년 9월 30일 금요일

How to use ODROID like B/T speaker.

ODROID + HDMI monitor <-- B/T --> Smartphone
ODROID(car PC) <-- B/T --> Smartphone


Open Terminal Emulator.


$ su


# mount -o rw,remount /


# vi /build.prop


Add and save.
#Bluetooth Audio A2dp Sink    
persist.service.bt.a2dp.sink=true

Reboot system.

Now enable 'Media audio' item.


Connect your smartphone to ODROID via B/T and play music.

2016년 7월 15일 금요일

노트북에 Remix OS 설치해 보기


ODROID에 Android를 설치하고 USB Keyboard와 mouse를 연결하고 나름 Desktop PC처럼 사용 할 수 있습니다. 하지만 창 모드가 안되고 스마트폰에 최적화 되어 있는 UI와 사용자 인터페이스가 조금 아쉽게 느껴집니다.

아래 보이는 것은 Andromium OS app을 ODROID-C2에 설치한 모습니다. 
Desktop UI처럼 보여 주도록 하는 app인데 정착 사용해 보면 그냥 Desktop UI를 흉내 낸 수준입니다. 
별로 추천 드리고 싶지 않습니다.


그래서 Android를 Desktop UI로 변형한 Remix OS가 생각나서 찾아 봤습니다.
이전부터 x86 Android project가 존재하기 했었습니다.
한번 설치해 보고 사용은 안 해 봤었습니다.
둘다 x86에 android를 설치하고 배포판을 만드는 프로젝트라 같이 진행이 되는 듯 보입니다.

googling 하여 보면 설치와 Google Play Store 설치에 대해서는 잘 나와 있습니다.

설치는 간단합니다. img 파일을 저장장치에 굽고 BIOS에서 USB 부팅하도록 설정하시면 됩니다.

아래 그림처럼 구형 노트북에 설치해 보았습니다.


USB Memory stick에 Remix OS 이미지를 구워 부팅한 모습입니다.
googling 하여 Google Play Store를 설치하고 사용하는 Google 계정을 넣어 보았습니다.

마치 Windows PC를 사용하는 정도로 편하지 않지만 android smartphone의 app과 Desktop PC 인터페이스가 합쳐져서 매우 만족 스러웠습니다.


Remix OS가 설치된 USB Memory Stick만 가지고 다니면 언제든지 사용하던 android를 어디서나 사용할 수 있게 됩니다.
위에서 사용하던 USB Memory Stick을 회사 Desktop PC에 넣고 부팅한 모습입니다.
물론 앞에서 언급 하였듯이 BIOS에서 booting 순서는 손 봐줘야 합니다.


USB Memory Stick에서 동작하다 보니 조금 버벅거림은 존재 합니다. 성늠 좋은 Desktop PC에 꼽았다고 성능이 좋아지는 거에는 한계가 있나 봅니다.




http://www.jide.com/remixos