Difference between revisions of "IoTGateway/Features/Android/Software"
| Line 1: | Line 1: | ||
{{DISPLAYTITLE:Android Software Features}} | {{DISPLAYTITLE:Android Software Features}} | ||
| − | ==Logo Change== | + | |
| − | Logo for customer | + | == Logo Change == |
| − | Boot Logo U-boot | + | |
| − | <small> | + | Logo for customer Boot Logo U-boot [Android 4.2 ~ Android 4.4] <small></small> |
| − | + | ||
| + | <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 : 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 | + | |
| − | <small> | + | Boot Logo Android Frameworks [Android 4.2 ~ Android 4.4] <small></small> |
| − | + | ||
| + | <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. | ||
| − | :[[ | + | |
| + | :[[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> |
| − | |||
| − | + | <small> # getprop ro.build.version.release </small> | |
| − | <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>”. | ||
| + | |||
| + | 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. 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) 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. | ||
| + | <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) tar zxvf reference-ril.tar.gz to android/hardware/ril/ | ||
| + | |||
| + | (5) Mark chat.c module form AOSP (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 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>