Enhancement #5

tilapia: Re-work ril based on Ericsson mbm HAL

Added by André Pinela over 2 years ago. Updated about 2 years ago.

Target version:
% Done:




Opensource tilapia's ril to replace proprietary libxgold-ril blob It seems that tilapia's baseband supports call's so this work should be capable of enable them.


#1 Updated by André Pinela over 2 years ago

Some convenient info about MBM RIL: This is Ericsson RIL included in Ericsson MBM HAL 4.0 BETA Release notes for Ericsson MBM HAL 4.0 BETA DELIVERY CONTENTS ******************************************************************************** • Ericsson RIL and GPS HAL for Android Jellybean (4.1) This release include fixes and enhancements since MBM HAL 4.0 ALPHA (ICS). See enhancements and fixes below. PRODUCT STATUS ******************************************************************************** • Tested on the HP TouchPad 4G (tenderloin) platform with the Ericsson F5521gw. • Supported Android API/SDK levels: API Level 14 Android 4.0 to 4.0.2 Ice Cream Sandwich API Level 15 Android 4.0.3 to 4.0.4 Ice Cream Sandwich API Level 16 Android 4.1 to 4.1.2 Jelly Bean • Untested Android API/SDK levels: API Level 17 Android 4.2 Jelly Bean API Level 18 Android 4.3 Jelly Bean API Level 19 Android 4.4 KitKat NEW FEATURES ******************************************************************************** • Android 4.1.2 Support for All MBM products. KNOWN LIMITATIONS ******************************************************************************** • Limited testing has been performed only on the Tenderloin platform. INSTALLATION ******************************************************************************** MBM Distribution Files -------------------------------------------------------------------------------- • Expand the archive under the vendor directory ($BUILD_TOP/vendor/mbm). -------------------------------------------------------------------------------- Kernel drivers -------------------------------------------------------------------------------- • Make sure that kernel has CDC_NCM, CDC_ACM, CDC_WDM, and USBNET drivers: CDC NCM Interface Driver: USB Host Driver for Network Control Model -> defconfig: CONFIG_USB_NET_CDC_NCM=y -> file: drivers/net/usb/cdc_ncm.c CDC ACM Interface Driver: USB Abstract Control Model driver for USB modems and ISDN adapters -> defconfig: CONFIG_USB_ACM=y -> file: drivers/usb/class/cdc-acm.h -> file: drivers/usb/class/cdc-acm.c CDC WDM Interface Driver: USB Abstract Control Model driver for USB WCM Device Management -> defconfig: CONFIG_USB_WDM=y -> file: drivers/usb/class/cdc-wdm.c -> file: include/linux/usb/cdc-wdm.h USB NET Interface Driver: USB Networking Link Interface -> defconfig: CONFIG_USB_USBNET=y -> defconfig: CONFIG_USB_NET_CDCETHER=y -> defconfig: CONFIG_USB_NET_CDC_SUBSET=y -> file: include/linux/usb/usbnet.h -> file: drivers/net/usb/usbnet.c • Versions of these kernel drivers that should work for Linux 2.6.35 to 3.0.26 are provided in the distribution 'patches' directory. These drivers include a correction to the ncm driver for a firmware issue in the F5521gw module which causes a hard data-stall. Documentation and installation instructions are provided in the kernel_patches.txt file. It is up to the integrator to make sure everything works as intended. -------------------------------------------------------------------------------- Android system, device, and framework files -------------------------------------------------------------------------------- • The changes below are typically required to enable MBM and GPS, but will vary depenging on the specific version/target product. It is up to the integrator to make sure everything works as intended. • The RIL-Daemon may use usb0 instead of rmnet0 depending on kernel version. / --------------------------------------------------------- • Verify that TARGET_DEVICE contains your device name (ex. tenderloin). • If the following is defined, change to false: ......... BOARD_HAVE_GPS_BCM := false ......... • Include the following: ......... BOARD_USES_MBM_GPS := true BOARD_GPS_LIBRARIES := gps.$(TARGET_DEVICE) USE_QEMU_GPS_HARDWARE := false ......... /.mk (ex. /device/hp/tenderloin/ ---------- • Set permissions for GSM telephony: ......... (JB) PRODUCT_COPY_FILES += \ frameworks/native/data/etc/android.hardware.telephony.gsm.xml: \ system/etc/permissions/android.hardware.telephony.gsm.xml ......... (JB) ......... (ICS) PRODUCT_COPY_FILES += \ frameworks/base/data/etc/android.hardware.telephony.gsm.xml: \ system/etc/permissions/android.hardware.telephony.gsm.xml ......... (ICS) • Include the product packages below and others if necessary for the target product. Note that Mms may be included elsewhere. ......... PRODUCT_PACKAGES += \ gps.$(TARGET_DEVICE) \ MbmService \ libmbm-ril \ Mms ......... • Copy in other support files as desired. See examples in the distribution support directory. ......... PRODUCT_COPY_FILES += \ vendor/mbm/support/gps.conf:system/etc/gps.conf ......... /system/core/rootdir/init.rc --------------------------------------------------- • Set TCP buffer sizes for various networks as desired, example: ......... # Define TCP buffer sizes for various networks # ReadMin, ReadInitial, ReadMax, WriteMin, WriteInitial, WriteMax, setprop net.tcp.buffersize.default 4096,87380,110208,4096,16384,110208 setprop net.tcp.buffersize.wifi 524288,1048576,2097152,262144,524288,1048576 setprop net.tcp.buffersize.lte 524288,1048576,2560000,262144,524288,1220608 setprop net.tcp.buffersize.umts 4094,87380,110208,4096,16384,110208 setprop net.tcp.buffersize.hspa 4092,87380,704512,4096,16384,262144 setprop net.tcp.buffersize.hsupa 4092,87380,704512,4096,16384,262144 setprop net.tcp.buffersize.hsdpa 4092,87380,704512,4096,16384,110208 setprop net.tcp.buffersize.hspap 4092,87380,704512,4096,16384,262144 setprop net.tcp.buffersize.edge 4093,26280,35040,4096,16384,35040 setprop net.tcp.buffersize.gprs 4092,8760,11680,4096,8760,11680 setprop net.tcp.buffersize.evdo 4094,87380,262144,4096,16384,262144 setprop net.tcp.buffersize.evdo_b 4094,87380,262144,4096,16384,262144 ......... • Set the libpath and libargs in init.rc for the ril-daemon service: ......... service ril-daemon /system/bin/rild -l /system/lib/ -- -d /dev/ttyACM1 -i rmnet0 class main socket rild stream 660 root radio socket rild-debug stream 660 radio system user root group radio cache inet misc audio sdcard_r sdcard_rw log ......... • Alternatively, libpath and libargs can be set in /systm.prop, ex.: ......... # MBM ril mobiledata.interfaces=rmnet0 rild.libpath=/system/lib/ rild.libargs=-d /dev/ttyACM1 -i rmnet0 ......... • Add the following to enable selective suspend and set permissions in either /system/core/rootdir/init.rc or /init..rc. USB devices may vary depending on the target product. ......... # MBM on init # Enable USB auto suspend for MBM devices write /sys/bus/usb/devices/1-1/power/autosuspend 2 write /sys/bus/usb/devices/1-1/power/control auto write /sys/bus/usb/devices/1-1/power/wakeup enabled # if necessary for device # write /sys/bus/usb/devices/2-1/power/autosuspend 2 # write /sys/bus/usb/devices/2-1/power/control auto # write /sys/bus/usb/devices/2-1/power/wakeup enabled # if necessary for ICS # symlink /dev/bus/usb/002/049 /dev/cdc-wdm0 # symlink /dev/bus/usb/002/050 /dev/cdc-wdm1 chown system system /dev/cdc-wdm0 chmod 0666 /dev/cdc-wdm0 chown system system /dev/cdc-wdm1 chmod 0666 /dev/cdc-wdm1 ......... • Add the following system properties in either /system/core/rootdir/init.rc or /init..rc depending on the target product. ......... # Enable Network Identity and Time Zone (NITZ) support setprop yes # Enable RIL Fast Dormancy setprop yes # Enable Neighboring Cell Info support # yes = supported, no = not supported, screen = only when screen on setprop screen # Set Loglevel for MBM GPS setprop mbm.gps.config.loglevel INFO # Set the device for controlling the gps setprop mbm.gps.config.gps_ctrl /dev/cdc-wdm0 # Set the device for nmea data setprop mbm.gps.config.gps_nmea /dev/ttyACM2 # Set the desired mode (PGPS,SUPL or STANDALONE setprop mbm.gps.config.gps_pref_mode PGPS # The following settings are only used for SUPL # Enable network initiated requests setprop mbm.gps.config.supl.enable_ni yes # Allow connecting to supl servers without certificates setprop mbm.gps.config.supl.uncert yes ......... /system/core/rootdir/ueventd.rc ------------------------------------------------ • Add the following in either /system/core/rootdir/ueventd.rc or /ueventd..rc depending on the target product. ......... # MBM devices /dev/ttyACM0 0666 radio radio /dev/ttyACM1 0666 radio radio /dev/ttyACM2 0640 system system /dev/cdc-wdm0 0666 system system /dev/cdc-wdm1 0666 system system ......... /frameworks/base/core/res/res/values/config.xml ------------------------ • Add the following values ......... "wifi,1,1,1,-1,true" "mobile,0,0,2,-1,true" "mobile_mms,2,0,2,60000,true" "mobile_supl,3,0,2,60000,true" "mobile_hipri,5,0,3,60000,true" "bluetooth,7,7,2,-1,true" "ethernet,9,9,2,-1,true" "mobile_fota,10,0,2,60000,true" "mobile_ims,11,0,2,60000,true" "mobile_cbs,12,0,2,60000,true" "wifi_p2p,13,1,0,-1,true" ......... "1,1" "0,1" "7,1" "9,1" "usb0" "rndis0" "wlan0" bnep\\d 0 1 5 7 9 ......... true ......... ENHANCEMENTS AND FIXES RIL ******************************************************************************** • Added Fast Dormancy with option to enable/disable through system properties. • Added support for RIL_REQUEST_NEIGHBORINGCELL_IDS. • Added option to enable/disable RIL NITZ through system properties. • Added human readable status messages from E2NAP state updates. • Reduced registration chatter on state change. • Reduced default AT command timeout to 30 seconds. • Improved screen off state handling. • Added regression for AT timeout. • Added processEvent debug print for easier debugging. • Added human readable status messages from E2NAP state updates. • Reduced module polling if no operator is found during boot. • Detect and handle case when network time message is received when string format has been temporarily set to UCS-2. • Changed writeline() and writeCtrlZ() functions so that a single write is used to send AT command. • Fix for string buffer overflow errors for some DNSes configurations. • Fixed SIM Hotswap issue where internet account configuration is not updated. • GUI: Added better matching for E2REG and RIL Restricted State. • GUI: Correction for GPRS registration states. • GUI: Fixed mismatch between current and home network. • POLLERR: Fixed possible race-condition on at_close() call. • Correction for PDP Context activation and deactivation. • Fixed issue where RIL was unable to reopen the ACM port after POLLERR. • Fixed issue with phread_cond_timedwait which could cause high CPU usage. • Correction for selective suspend during SIM Hotswap conditions. • Fixed bug in net-utils where a double call to ifc_init could return a faulty socket handle. • Fixed uninitialized variable issue. • Fixed two memory leaks. • Fixed issue of specific AT command being mixed up with an unsolicited response. • Fixed issue for concatenated Cell Broadcast messages. • Fixed signal strength reporting. • Fixed SIM Hotswap and streamlined the RIL to better match the Android framework. • Fixed MMS for when operator has different APNs for Data and MMS (Requires changes to and • Lowered the frequency of AT+CCLK by checking the time before updating it in the module. • Fixed bug where CONNECTING state was not properly handled. • Fixed closing the AT readerloop twice when POLLERR occurs. • Fixed ACM re-enumeration issue. • Corrected bad screen state if SIM is PIN locked. • Corrected case where SIM message store polling can get stuck if SIM is PIN locked. • Corrected unnecessary queuing of RSSI polls. ******************************************************************************** GPS ******************************************************************************** • Added request to service to get all current GPS settings when GPS is enabled if the device is started with GPS disabled. • Correction for SUPL user/pass which sometimes comes as string "null" if nothing is defined. • Fixed dangling ACM port during SIM Hotswap and enabled VERBOSE debugging. • Changed default logging level and added AT command to error print. • Only set SUPL APN info if it has changed, reduced logging to info level and added support for loglevel by systemproperty. • Handling some errors regarding epoll_create and epoll_wait in a specific sequence of usage thereof. • Handling unexpected unsolicited response *E2GPSSTAT: 1,0,0,0,0 after starting GPS in SUPL mode. • Fixed ACM re-enumeration issue. ******************************************************************************** MBMSERVICE ******************************************************************************** • Fixed bug where service was crashing if no preferapn or carrier database was available. • Refactored SUPL APN selection, cleaned up default logging to info level and added support for runtime loglevel control. • Fixed bug where the service loop hangs/crashes after receiving a CMD_SEND_ALL_INFO command from GPS lib. SUPPORT FILES ******************************************************************************** gps.conf ******************************************************************************** • Example gps config file. ******************************************************************************** xmesg ******************************************************************************** • Utility for converting dmesg with timestamps modeled after "logcat -v time". ******************************************************************************** ******************************************************************************** • Script to create a compressed file with Android logs. ******************************************************************************** ******************************************************************************** • Script to capture logs when a POLLERR occurs. cp /system/bin chmod 755 /system/bin/ &

#2 Updated by André Pinela over 2 years ago

  • Description updated (diff)

#3 Updated by André Pinela over 2 years ago

  • Tracker changed from Bug to Enhancement

#4 Updated by André Pinela over 2 years ago

  • Due date set to 12/31/2016

#5 Updated by André Pinela about 2 years ago

  • Target version set to aosp-any

Also available in: Atom PDF