Difference between revisions of "IoTGateway/Features/Android/Software"

From ESS-WIKI
Jump to: navigation, search
Line 1: Line 1:
 
{{DISPLAYTITLE:Android Software Features}}
 
{{DISPLAYTITLE:Android Software Features}}
==Logo Change==
+
 
Logo for customer
+
== Logo Change ==
Boot Logo U-boot [Android 4.2 ~ Android 4.4]
+
 
<small>
+
Logo for customer Boot Logo U-boot [Android 4.2 ~ Android 4.4] <small></small>
  (1)  BSP support
+
 
 +
<small> (1)  BSP support
 
   (2)  Convert the bmp file to hex value.
 
   (2)  Convert the bmp file to hex value.
       Example : bmp file name is aaa.c
+
       Example&nbsp;: bmp file name is aaa.c
 
   (3)  Step1.
 
   (3)  Step1.
 
         Add aaa.o in board/freescale/common/Makefile
 
         Add aaa.o in board/freescale/common/Makefile
Line 16: Line 17:
 
         Enable CONFIG_SPLASH_SCREEN config
 
         Enable CONFIG_SPLASH_SCREEN config
 
         Set lvds_num to 0, because we use LVDS0 channel.</small>
 
         Set lvds_num to 0, because we use LVDS0 channel.</small>
Boot Logo Android Frameworks [Android 4.2 ~ Android 4.4]
+
 
<small>  
+
Boot Logo Android Frameworks [Android 4.2 ~ Android 4.4] <small></small>
  (1) Please rename your Logo file to "android-logo-mask.png"
+
 
 +
<small> (1) Please rename your Logo file to "android-logo-mask.png"
 
   (2) Replace the logo image file
 
   (2) Replace the logo image file
 
       --> frameworks/base/core/res/assets/images/android-logo-mask.png.</small>
 
       --> frameworks/base/core/res/assets/images/android-logo-mask.png.</small>
  
==ADV Loader==
+
== ADV Loader ==
 +
 
 
(ADV loader)Advantech loader in RISC
 
(ADV loader)Advantech loader in RISC
  
 
RISC platform boot sequence.
 
RISC platform boot sequence.
:[[Image:Adv_loader2.png|500px]]
+
 
 +
:[[File:Adv loader2.png|500px|Adv loader2.png]]
  
 
ADV loader have some function.
 
ADV loader have some function.
Line 34: Line 38:
 
2. Multi-Boot function
 
2. Multi-Boot function
  
==Android Version==
+
== Android Version ==
Get Android Version
+
 
<small>
+
Get Android Version <small></small>
  # getprop ro.build.version.release </small>
 
  
Get Android SDK Version
+
<small> # getprop ro.build.version.release </small>
<small>
 
  # getprop ro.build.version.sdk </small>
 
  
==Linux Kernel Version==
+
Get Android SDK Version <small></small>
Get Linux Kernel Version
+
 
<small>
+
<small> # getprop ro.build.version.sdk </small>
  # uname -r
+
 
 +
== Linux Kernel Version ==
 +
 
 +
Get Linux Kernel Version <small></small>
 +
 
 +
  <small># uname -r
 
  # 3.14.52 </small>
 
  # 3.14.52 </small>
  
==USB Camera==
+
== USB Camera ==
 +
 
 
USB Camera Porting
 
USB Camera Porting
 +
 +
== 3G () ==
 +
 +
3G module Porting
 +
 +
(1) In linux kernel
 +
 +
1. You need to add the mechanism for processing zero packets during transmission of “<span style="color:#0000CD;">usb_wwan.c</span>” file under “<span style="color:#0000CD;">[KERNEL]/drivers/usb/serial</span>”.&nbsp;
 +
 +
You need to add the following statements to the “<span style="color:#FF0000;">usb_wwan_setup_urb</span>” function, as shown below:
 +
<pre>/* Helper functions used by usb_wwan_setup_urbs */
 +
static struct urb *usb_wwan_setup_urb(struct usb_serial *serial, int endpoint,
 +
                      int dir, void *ctx, char *buf, int len,
 +
                      void (*callback) (struct urb *))
 +
{
 +
    struct urb *urb;
 +
 +
    if (endpoint == -1)
 +
        return NULL;    /* endpoint not needed */
 +
 +
    urb = usb_alloc_urb(0, GFP_KERNEL);    /* No ISO */
 +
    if (urb == NULL) {
 +
        dbg("%s: alloc for endpoint %d failed.", __func__, endpoint);
 +
        return NULL;
 +
    }
 +
 +
    /* Fill URB using supplied data. */
 +
    usb_fill_bulk_urb(urb, serial->dev,
 +
              usb_sndbulkpipe(serial->dev, endpoint) | dir,
 +
              buf, len, callback, ctx);
 +
 +
<span style="color:#B22222;">    /*Quectel PRODEUCTS*/
 +
    if (dir == USB_DIR_OUT) {
 +
        struct usb_device_descriptor *desc = &serial->dev->descriptor;
 +
        if (desc->idVendor == 0x05C6 && (desc->idProduct == 0x9003
 +
            || desc->idProduct == 0x9090
 +
            || desc->idProduct == 0x9215)) {
 +
                urb->transfer_flags |= URB_ZERO_PACKET;
 +
        }
 +
    }</span>
 +
    return urb;
 +
}</pre>
 +
 +
 +
 +
2.&nbsp;&nbsp;Add UC15/UC20/EC20's Vendor ID and Product ID in "option_ids[]" in the file "drivers/usb/serial/option.c":
 +
<pre>static const struct usb_device_id option_ids[] = {
 +
<span style="color:#B22222;">#start // Added by Quectel
 +
{ USB_DEVICE(0x05C6, 0x9090) }, //For UC15
 +
{ USB_DEVICE(0x05C6, 0x9003) }, //For UC20
 +
{ USB_DEVICE(0x05C6, 0x9215) }, //For EC20
 +
#end</span></pre>
 +
 +
(2)&nbsp;You need to configure the kernel to support PPP dial up.&nbsp;Check your&nbsp;menuconfig. &nbsp; &nbsp;Ref:&nbsp;Quectel_Android_RIL_Driver_User_Guide_V1.3.pdf&nbsp;
 +
 +
&nbsp; ps&nbsp;: In android 4.4.2. we already enable ppp config and USB driver for GSM/CDMA modems.
 +
 +
(3) &nbsp;Modify init.rc. &nbsp;In&nbsp;android\device\fsl\imx6\etc\init.rc.
 +
<pre>  on boot
 +
    setprop rild.libargs "-d /dev/ttyUSB2"
 +
 +
  service ril-daemon /system/bin/rild -l /system/lib/libreference-ril.so
 +
      class main
 +
      socket rild stream 660 root radio
 +
      socket rild-debug stream 660 radio system
 +
      user root
 +
      group radio cache inet misc audio sdcard_rw log</pre>
 +
 +
(4) &nbsp;tar zxvf&nbsp;reference-ril.tar.gz to&nbsp;android/hardware/ril/
 +
 +
(5) &nbsp;Mark chat.c module form AOSP &nbsp;(android\external\ppp\pppd\Android.mk)
 +
<pre># Force sizeof(enum)=4
 +
LOCAL_CFLAGS := -fno-short-enums -DANDROID_CHANGES -DCHAPMS=1 -DMPPE=1 -Iexternal/openssl/include
 +
 +
LOCAL_MODULE:= pppd
 +
LOCAL_MODULE_TAGS := optional
 +
include $(BUILD_EXECUTABLE)
 +
 +
<span style="color:#B22222;">#include $(CLEAR_VARS)
 +
#LOCAL_SRC_FILES := chat.c
 +
#LOCAL_SHARED_LIBRARIES := libcutils
 +
#LOCAL_MODULE := chat
 +
#LOCAL_MODULE_TAGS := optional
 +
#include $(BUILD_EXECUTABLE)</span></pre>

Revision as of 17:09, 19 October 2016


Logo Change

Logo for customer Boot Logo U-boot [Android 4.2 ~ Android 4.4]

 (1)  BSP support
 (2)  Convert the bmp file to hex value.
      Example : bmp file name is aaa.c
 (3)  Step1.
        Add aaa.o in board/freescale/common/Makefile
        Add aaa.c in board/freescale/common/
      Step2.
        Modify LCD setting in board/freescale/mx6q-rom-3420/mx6q_rom-3420.c
        Fill in correct timing parameters for customer panel (Phill provide parameter).
      Step3.
        Enable CONFIG_SPLASH_SCREEN config
        Set lvds_num to 0, because we use LVDS0 channel.

Boot Logo Android Frameworks [Android 4.2 ~ Android 4.4]

 (1) Please rename your Logo file to "android-logo-mask.png"
 (2) Replace the logo image file
     --> frameworks/base/core/res/assets/images/android-logo-mask.png.

ADV Loader

(ADV loader)Advantech loader in RISC

RISC platform boot sequence.

Adv loader2.png

ADV loader have some function.

1. Include DDR parameter

2. Multi-Boot function

Android Version

Get Android Version

 # getprop ro.build.version.release 

Get Android SDK Version

 # getprop ro.build.version.sdk 

Linux Kernel Version

Get Linux Kernel Version

# uname -r
# 3.14.52 

USB Camera

USB Camera Porting

3G ()

3G module Porting

(1) In linux kernel

1. You need to add the mechanism for processing zero packets during transmission of “usb_wwan.c” file under “[KERNEL]/drivers/usb/serial”. 

You need to add the following statements to the “usb_wwan_setup_urb” function, as shown below:

/* Helper functions used by usb_wwan_setup_urbs */
static struct urb *usb_wwan_setup_urb(struct usb_serial *serial, int endpoint,
                      int dir, void *ctx, char *buf, int len,
                      void (*callback) (struct urb *))
{
    struct urb *urb;

    if (endpoint == -1)
        return NULL;    /* endpoint not needed */

    urb = usb_alloc_urb(0, GFP_KERNEL);    /* No ISO */
    if (urb == NULL) {
        dbg("%s: alloc for endpoint %d failed.", __func__, endpoint);
        return NULL;
    }

    /* Fill URB using supplied data. */
    usb_fill_bulk_urb(urb, serial->dev,
              usb_sndbulkpipe(serial->dev, endpoint) | dir,
              buf, len, callback, ctx);

<span style="color:#B22222;">    /*Quectel PRODEUCTS*/
    if (dir == USB_DIR_OUT) {
        struct usb_device_descriptor *desc = &serial->dev->descriptor;
        if (desc->idVendor == 0x05C6 && (desc->idProduct == 0x9003 
            || desc->idProduct == 0x9090 
            || desc->idProduct == 0x9215)) {
                urb->transfer_flags |= URB_ZERO_PACKET;
        }
    }</span>
    return urb;
}


2.  Add UC15/UC20/EC20's Vendor ID and Product ID in "option_ids[]" in the file "drivers/usb/serial/option.c":

static const struct usb_device_id option_ids[] = {
<span style="color:#B22222;">#start // Added by Quectel
{ USB_DEVICE(0x05C6, 0x9090) }, //For UC15
{ USB_DEVICE(0x05C6, 0x9003) }, //For UC20
{ USB_DEVICE(0x05C6, 0x9215) }, //For EC20
#end</span>

(2) You need to configure the kernel to support PPP dial up. Check your menuconfig.    Ref: Quectel_Android_RIL_Driver_User_Guide_V1.3.pdf 

  ps : In android 4.4.2. we already enable ppp config and USB driver for GSM/CDMA modems.

(3)  Modify init.rc.  In android\device\fsl\imx6\etc\init.rc.

  on boot
    setprop rild.libargs "-d /dev/ttyUSB2"

  service ril-daemon /system/bin/rild -l /system/lib/libreference-ril.so
      class main
      socket rild stream 660 root radio
      socket rild-debug stream 660 radio system
      user root
      group radio cache inet misc audio sdcard_rw log

(4)  tar zxvf reference-ril.tar.gz to android/hardware/ril/

(5)  Mark chat.c module form AOSP  (android\external\ppp\pppd\Android.mk)

# Force sizeof(enum)=4
LOCAL_CFLAGS := -fno-short-enums -DANDROID_CHANGES -DCHAPMS=1 -DMPPE=1 -Iexternal/openssl/include

LOCAL_MODULE:= pppd
LOCAL_MODULE_TAGS := optional
include $(BUILD_EXECUTABLE)

<span style="color:#B22222;">#include $(CLEAR_VARS)
#LOCAL_SRC_FILES := chat.c
#LOCAL_SHARED_LIBRARIES := libcutils
#LOCAL_MODULE := chat
#LOCAL_MODULE_TAGS := optional
#include $(BUILD_EXECUTABLE)</span>