工作总结整理
硬件相关
A64
交互式程序 10s 自动退出
由于守护脚本 normal_restart.sh 里不停的启动多媒体程序,导致多媒体程序盖上了交互式程序
无故重启
- 供电问题,日志无异常(内蒙古民族大学)
A64 播放 Rtsp 没有声音
音频编码设置成 AAC 编码格式
A64 手柄出发 HOME 键
修改 /system/usr/keylayout/sunxi-keyboard.kl 文件
串口无数据
使用以下方式排查 /dev/ttyS3 串口问题:
# 查看/dev/ttyS3串口数据
cat /dev/ttyS3
# 保存/dev/ttyS3串口数据,查看数据是否正常
cat /dev/ttyS3 > /sdcard/test
# 查看程序是否开启的该串口
ls -l /proc/PID/fd | grep /dev/ttyS3
移除lighttpd
mv /system/xbin/lighttpd-static /system/xbin/lighttpd-static-bak
801
藏文叫号
录制的语音文件为 MP3 格式,48k 采样率,单声道。添加时确保这些格式是对的。
屏参无故被修改
- 执行
mount -o remount,rw /tvservice给予权限 - 查看
/tvservice/config/model/Customer_1.ini文件中panel节点的m_ppanelname属性,确认屏参文件 - 修改所有屏参文件内容为正在使用的屏参文件
朗国 3288

3288L 板默认 ttyS1 是 TTL,ttyS3 是 232
开关屏无效
屏幕背光接线错误,没有接到主板上。可以通过使用遥控器关机验证该问题,如果关机后有背光,说明接线错误
gpio 引脚编号
- IO1 --234
- IO2 --233
- IO3 --231
- IO4 --222

隐藏显示导航栏
修改 persist.sys.setting.ui.hidenav 属性,1- 隐藏 0- 显示
设置默认 launcher
Android5: persist.sys.default.activity=shine.shineplayer.HomeActivity
Android7: persist.sys.default.package=shine.shineplayer
固定 MAC 地址
执行 rk_vendor_rw -m "40:33:44:FF:ED:5E" 后重启生效
问题
- 3288 全系列主板磁条刷卡器不好用,自带输入法会拦截键值,需要更换默认输入法
开启系统自带日志记录功能
设置 persist.sys.saveSystemLog 属性为 1 后,重启系统
shell 设置音量
# 设置音量 service call audio 3 i32 2 i32 2 i32 0
service call audio 3 i32 [type] i32 [volume] i32 0
# 查看音量
service call audio 8 i32 [type]
# 352、905、810 设置最大音量
media volume --show --stream 3 --set 100
OTA 升级
- 推送升级包到 /sdcard下面
- 推送成功之后,依次执行如下adb命令进行升级:
echo --update_package=/data/media/0/update.zip > /cache/recovery/command
echo --locale=zh_CN >> /cache/recovery/command
reboot recovery
- 等待升级完成
朗国 352
页面播放跑马灯动画导致屏幕偶发闪烁
修改 /vendor/build.prop 中的 debug.hwui.renderer 系统属性为 opengl
设置静态 IP
am broadcast -a com.xbh.action.SET_ETHERNET_MODE --es mode "static" --es ip "10.5.207.11" --es gateway "10.5.207.1" --es netMask "255.255.255.0" --es dns1 "172.16.201.251" --es dns2 "172.16.201.251"
应用内显示图片没有系统自带应用显示的清楚
需要使用海思特有的接口显示图片:链接: https://pan.baidu.com/s/1Cex-ZXh9oH__J9Rdk_A4hw?pwd=x1yt 提取码: x1yt
解码使用 HiPlayer
添加包名到 hiplayer_package_whitelist.xml 文件中,并放到 /vendor/etc/ 目录中
朗国 352 通过修改 hiplayer_package_whitelist.xml 默认文件,凯佳达 352 是在固件代码里写死
郎国 905
程序出现黑边

必须设置 targetSdkVersion 版本为 29 以上,不然会出现黑边
Web 管理软件不能修改默认密码
文件权限问题,需要在开机脚本中添加:
if [ ! -f /data/config.ini ]; then
cp /system/usr/www/servers/config.ini /data/config.ini
fi
rm -rf /system/usr/www/servers/config.ini
ln -s /data/config.ini /system/usr/www/servers/config.ini
默认密码不能包含特殊符号 {}|&~
run_shine.sh 开机不执行
亿晟 3566 v4.0 编译日期在 20230625 之前的固件开机不执行 run_shine.sh,安装该 apk 后,启动一次即可,启动命令为 am start -n com.example.myreplace/.activity.MainActivity
无法使用读卡器,找不到串口2
进入设置 -> 其他设置后,找到 打开串口2 开关,打开即可

禁用 launcher
pm disable com.softwinner.launcher
配置 HDMI 4K UI 显示
在设置里把主屏设置为 HDMI后,在 HDMI 设置中开启 4K UI 显示
亿晟 3568
配置 4K UI 显示
setprop persist.vendor.framebuffer.main 3840x2160
# 开关HDMI输出
echo off > /sys/class/drm/card0-HDMI-A-1/status && echo on > /sys/class/drm/card0-HDMI-A-1/status
# 查看配置是否生效
cat /d/dri/0/summary
如果 src 和 dst 显示一致,都为 3840x2160,说明就是 4K 的 UI 了

郎国 810
查看 RTC 时钟
# push 到主板上
adb root
adb remount
adb push rtc_read /vendor/bin
# 获取 rtc 时间
adb shell rtc_read time
# 获取 rtc 定时开机状态
adb shell rtc_read alarm
# 获取 rtc 定时开机时间
adb shell rtc_read alarm_time**
# 设置安卓系统时间会同步设置 rtc 时间
am broadcast -a com.android.lango.setsystemtime --el time 1622476800000
rtc 时间不对的机器,可以用 date 命令先看下系统时间对不对
最好先不要联网,这样就不会自动同步安卓时间
1. 出问题的机器,是不是 rtc 时间都有问题(用 rtc_read 命令)
2. 不要联网,用 date 命令看下系统时间是否正确
3. 设置一下系统时间,看下 rtc 时间有没有更新,命令:
am broadcast -a com.android.lango.setsystemtime --el time 1622476800000
4. 还有问题的话,强制写 rtc 时间,命令:
i2c_write 4 0xa3 0x02 0x01 0x07 0x00 0x00 0x00 0x01 0x05 0x01 0x51
810 开关屏状态不对
从 V2.0.6 Hi3751V811_DMO-eng 8.0.0 OPR6.170623.013 eng.liangy.20210525.170811 release-keys 版本内核开始,
进入工厂模式
先进 HDMI
然后遥控按 上下左右1337
定时开机不生效
使用命令 getprop ro.product.version 查看版本属性,如果版本低于 V2.2.0,需要联系朗国升级系统
OAT 升级方式
# 将升级包放到/sdcard/目录下,发送下面广播
am broadcast -a com.xbh.action.UPDATE_SYSTEM -n com.android.settings/com.android.settings.webservice.WebServiceReceiver
px30
小板将在串口 /dev/ttyS5,波特率是 9600
fake settings 使用
2022.12.29 添加配置:
设置内存属性 ro.product.customer.memory,单位是 G
设置存储属性 ro.product.customer.storage,单位是 G
AH10 切换 OTG 和 U 盘
切换 OTG:echo otg > /sys/devices/platform/ff2c0000.syscon/ff2c0000.syscon:usb2-phy@100/otg_mode
切换 HOST:echo host > /sys/devices/platform/ff2c0000.syscon/ff2c0000.syscon:usb2-phy@100/otg_mode
AH10 切换 4G 模块网卡和有线网卡
# 有线网卡
setprop ro.product.customer.interface eth0
# 4G 模块
setprop ro.product.customer.interface eth1
规格书
爱特沃
海思 3719C
禁用 dlna
pm disable com.hisilicon.dlna.dmr
pm disable com.hisilicon.dlna.dms
pm disable com.hisilicon.multiscreen.serve
黑色十寸话机
版本号
v210:1.0.107
v200:1.0.48
管理页面
用户名:superadmin
密码:psw.phone
开启/system 权限
- adb root
- adb disable-verity
- adb reboot 重启设备
- adb root
- adb remount
R16
使用reboot重启设备会导致设备无声音,需要重新上电才能恢复正常
解决开机后偶发无网络问题
/extdata/work/show/run_shine.sh脚本中添加以下内容解决:
busybox ifconfig eth0 down
sleep 2
busybox ifconfig eth0 up
朗国 810
OTA 升级
把update.zip放到/sdcard目录下,执行下面命令:
am broadcast -a com.xbh.action.UPDATE_SYSTEM -n com.android.settings/com.android.settings.webservice.WebServiceReceiver
朗国 V100
播放H265编码视频花屏
# 设置系统属性
setprop persist.sys.media.np.output ""
FAQ
定时开关机程序
配置文件放在了 data/data/com.shine.timerboot/files/time.json 文件中
文件作用说明
managerinfo.xml:定时开关机、开关屏、音量等设置
Showclient 内存泄漏导致设备离线
缺少 showclient 使用的目录
mkdir /home
mkdir /data/work/work
ln -s /data/work/work /home/work
人脸识别
授权丢失排查方法
旷视授权和网卡信息关联比较大,设备恢复出厂设置后,重新授权时必须保证和首次授权当时网络状态一致,例如首次授权是插着有线网络的同时开着 WiFi,重新授权的时候也需要是这样的状态
测试的时候首先保证 pw 文件授权点数已经消耗完了,防止设备重复授权消耗多个授权点书
使用 facepass_tool_v7 工具 获取设备信息,观察设备重启或者恢复出厂后获取到的设备信息是否一致
adb push facepass_tool_v7 /data/local/tmp
& adb shell chmod 777 /data/local/tmp/facepass_tool_v7
& adb shell /data/local/tmp/facepass_tool_v7 show
人脸识别授权接口
3.7 以前:https://api-cn.faceplusplus.com
新版 3.8:https://srp.megvii.com
授权相关

调试相关
开启 debug:setprop debug.facepass.log.level 666
串口扫描枪
- A64:串口
/dev/ttyS4,波特率 9600
TMZ 读卡器
无法读身份证
使用 SK1_02_V1.19 版本的软件升级
SK1_02_V1.19 版本升级包:链接: https://pan.baidu.com/s/1iT4dun3ztp8dfabc5Us58g?pwd=282t 提取码: 282t
升级工具:链接: https://pan.baidu.com/s/13uCdfpFTeHJWzTWf1bj7PA?pwd=c7hz 提取码: c7hz
判断是否三代 PSAM 卡
- 打开 TMZ 提供的测试程序。
- 连接设备。
- 选择 CPU 卡测试。
- 选择插有 PSAM 卡的卡座。
- 在发送数据输入框中输入
00A404000F7378332E73682EC9E7BBE1B1A3D5CF。 - 单击“发送 APDU 命令”。
- 如果提示发送成功,并且返回信息结尾为
9000,则代表使用的是三代 PSAM 卡。
00A404000F7378332E73682EC9E7BBE1B1A3D5CF:三代卡算法
00A404000F7378322E73682EC9E7BBE1B1A3D5CF:二代卡算法
致善读卡器
测试指令
// 寻卡
02 00 00 04 46 52 9c 03
// 防冲撞
02 00 00 04 47 04 4f 03
// 选卡
02 00 00 07 48 FD 84 99 31 9a 03
// 密钥
02 00 00 0b 4a 60 00 ff ff ff ff ff ff af 03
// 读0块
02 00 00 04 4b 00 4f 03
// 读1块
02 00 00 04 4b 01 50 03
远距离读卡器
波特率 57600
串口打印机
键值文件
遥控器红外码
H6
H6 适配遥控器文件 替换 /system/usr/keylayout/customer_ir_ff00.kl
810
810 适配遥控器文件 替换 /atv/etc/key.xml 并给 777 权限
A64
A64 适配 29K 键值文件 替换 /system/usr/keylayout/Generic.kl
长治二院屏蔽 30K 上、下、左、右、OK、HOME、MENU
905D3
905 键值文件 放到 /vendor/usr/keylayout/
执行 getevent 获取物理键值
遥控器适配
设备断电后文件损坏
由于文件系统的断电保护机制导致文件损坏,F2FS 比 EXT4 文件更容易出现断电后文件损坏的情况
Talk 有延时
修改 system/build.prop 文件,添加 ro.audio.flinger_standbytime_ms=50
关闭 lighttpd 服务
# A64
pkill lighttpd
终端 nt 长时间连接后离线
也是无法写 scDb 导致的泄露问题,开机执行
mkdir /home
mkdir /data/work/work
ln -s /data/work/work /home/work
logcat 导致存储空间不足
问题描述:程序中使用 shell 命令 logcat 记录日志,如果删除日志文件的同时不停止 logcat 进程,日志文件句柄依然会存在。会导致该进程会持续往被删除的文件中写入数据,导致存储空间不足。
排查方法:使用 lsof | grep \.txt | grep deleted 查看被删除 txt 格式文件句柄(不同平台不同 Android 版本该命令可能不一致),多次执行该命令,如果文件大小在增长,说明该进程还在往该文件中写入数据。
解决方案:由于 logcat 的进程是通过程序内调用 shell 命令启动的,所以不能停止该进程。只能通过 echo "" > /data/logcat.txt 清空日志文件。该问题解决。
朗国 352、凯佳达 352 配置解码使用 HiPlayer
添加包名到 hiplayer_package_whitelist.xml 文件中,并放到 /vendor/etc/ 目录中
朗国 352 通过修改 hiplayer_package_whitelist.xml 默认文件,凯佳达 352 是在固件代码里写死
电子医保凭证
配置
需要在设备的 /sdcard/shine/electronic.json 文件中配置解密电子医保凭证相关数据,例如:
{
"businessType": "01101",
"deviceType": "SelfService",
"officeId": "9015",
"officeName": "门诊收费室",
"operatorId": "LRY002",
"operatorName": "自助机2",
"orgId": "H43018100218",
"tradingUrl": "http://xxxxxx/localcfc/api/hsecfc/localQrCodeQuery",
"transType": "ec.query"
}
- businessType:用码业务类型
- deviceType:设备类型
- officeId:科室 ID
- officeName:科室名称
- operatorId:操作员 ID
- operatorName:操作员名称
- orgId:机构 ID
- tradingUrl:交易地址
- transType:交易类型
其中 orgId、tradingUrl 两个字段是必须修改的,其他字段可以默认不变
调用流程
- 扫描以后会调用页面
getReadCardInfo接口把电子医保卡号传递给页面 - 页面收到以后,调用 Android 的
nationEcTrans接口传递电子医保卡号 - Android 端通过
/sdcard/Shine/electronic.json文件里的配置信息解密电子医保卡 - Android 解密成功以后再次通过
onRawInput接口把结果传递给页面
修改 Web 管理页面密码
- 905、358、810 文件位置:
/system/usr/www/servers/config.ini
run_shine.sh 执行一会后自动停止
# 脚本结尾添加以下代码
while true; do
sleep 5
done
信发 9.0 FAQ
快速替换页面程序
# 删除现有页面程序
adb shell rm -rf /sdcard/shine/www/web
# push 页面程序压缩包到 /sdcard/shine/webapp/web.zip
adb push [本机页面程序压缩包文件路径] /sdcard/shine/webapp/web.zip
# 重启设备
adb reboot
如何配置加载指定页面地址
可以通过修改 /sdcard/shine/load_url_config.txt 文件来配置加载指定页面地址,文件内容为需要加载的 url:
https://www.baidu.com