本帖最后由 lzh 于 2018-10-20 15:29 编辑
其实也就是snat,dnat之类的网络地址转换功能,在linux下实现我还是非常熟悉的.ip转发在linux下很容易实现,开启内核的ip转发功能,用防火墙做一个snat和dnat就可以. 本以为很容易实现,但过程异常曲折,遇到好多坑.现记流水账记录一下功能完成经历. 环境板子型号:九鼎创展x6818 内核版本:linux3.4 安卓版本:Android5.1 编译环境:ubuntu18.04(没成功),ubuntu12.04(成功了) 致远4g模块ec20在x6818安卓系统上的功能实现 我就在淘宝上搜了一下ec20,并在网上查了一下发现x6818内核是集成了ec20驱动的,插上去就能用,于是在淘宝上买了一块功能最全的ec20让卖家发空运. 同时我在朋友那里要到了他保存在百度网盘里的x6818的安卓固件,以及一大堆x6818的其他系统固件,在我使用破解版的百度网盘下载到一半时,百度网盘客户端提示"网络错误",可能是文件太大,小文件数量太多,超速下载被百度检测到了,然后我使用了好几年不限速的破解版百度网盘客户端再也不能用了,下任何文件都提示网络错误.不过x6818安卓版的固件我已经下载好了. 第二天中午去自取了快递后,高高兴兴地插上板子,发现和没插一样,我联系了ec20卖家,他让我找x6818客服,x6818客服说x6818只支持老版本的ec20,我这个ec20太新了,让我找ec20卖家,ec20卖家说这是板子的问题,应该由板子厂商解决.最后,x6818客服说他们正在打新包,我向他们要了源码打算自己按照ec20用户指南里添加驱动. 客服给的源码也是在百度网盘里的,7.7g,限速100多k的百度网盘客户端要下好几天,我只好冲了一个月的会员. 下午的时候客服给了一个新的固件给我,我刷了后直接进不去系统了. 编译源码 晚上终于把源码下载好了,在windows下用好压解压要1个多小时!!! 按照开发指南上安装库,我ubuntu系统是18.04的,太新了,apt安装某些库时提示库名已经由libxxx变成libxxx2了,更有些库直接提示没有.而且手册上已经明确说明在非4.4版本的gcc上编译会报错.我尝试编译了一下,解决了几个错误,然后卡在一个无法解决的错误上了. 得.我用虚拟机装个ubuntu12.04再来编译吧. 用mbp上安装了个ubuntu12.04,把源码压缩包解压在mbp的桌面上,感觉mac自带的解压功能解压这个bz2格式的压缩包比在windows下用好压快.然后共享到虚拟机里编译,编译内核过程中报错,提示某文件找不到,百度的解决办法是自己新建一个这个文件,当时我就感觉有点奇怪了,官方给的包不应该缺少文件啊.继续编译又发现少文件,继续百度,原来是windows和mac不区分文件名大小写,解压的时候把部分文件覆盖了,我只好把这7.7g的压缩包复制到虚拟机,在虚拟机里解压.尼玛!!! 编译文件系统的时候,我用8线程编译./mk -j=8 -s 编译了一个多小时,我发现我虚拟机42g的磁盘只剩十几g了,我把7.7g的压缩包删了,过了一会,发现磁盘只剩几g的可用空间了,我百度了一下ubuntu12.04的卸载不常用的软件的方法,释放了几百兆的空间,但这只是杯水车薪,很快,我眼看着磁盘只剩400多k,编译终止! 我又给系统添加了一块100多g的磁盘,重启系统,输入密码后登录报错,应该是卸载软件时卸载多了.尼玛!!!
我在另一个tty上把新磁盘分区,把编译了一半的源码拷过去,然后新装了一个gnome桌面. 重启,进系统后开始编译文件系统,8线程编译,mbp的风扇在狂啸,我一直等到凌晨3点多,编译过程一点没有要停止的样子,我就去睡觉了. 周四9点半闹铃响后立刻看mbp,文件系统编译好了,46g!!! 那天早上把x6818客服又发了一个固件包给我,内核,文件系统都刷了后还是进不去桌面,我推测应该是他们的文件系统的问题,于是刷了自己的文件系统后就可以进桌面了,但触摸屏是反的,我点上显示我点下,我点左显示我点右,客服让我用鼠标键盘将就这用,他们工程师正在测试. 这次我插上sim卡后,板子能识别到联通网络了,但是没有信号,x6818客服说是缺少天线,尼玛,我买之前向ec20卖家咨询时他怎么不告诉我还需要一个天线才能用.在网上买已经来不及了,我搜了一些北京发货的商家问他们能不能自提,结果没一家说可以自提,我让他们发闪送,有一家老板说几块钱的东西闪送费50,他提示我到中发买. 于是下午我就到中关村中发电子大厦了,一楼全部没有,在二楼刚下手扶电梯就买到了,5块钱. 回去插上天线,配置一下apn,虽然在apn配置界面提示当前用户没有权限配置,但是配置完全没有问题. 有信号了,终于能上网了,但板子在重启几次后反着的触摸屏彻底不能用了.在客服把我拉进的群里问x6818的技术支持啥时候能解决,技术支持一直没回复.(刚才(20181019 23.47)登录了那个qq,发现x6818技术支持终于在今天的18点多回复了,并发了一个新固件) 官方一直没给出解决办法,我自己解决驱动问题吧.从昨天我就开始搜x6818 安卓 ec20相关的资料,最终我根据S5P4418 android 5.1 EC20 R2.0 PCIE接口调试记录和其他几篇相关博文,加上ec20卖家给我的<<Quectel_WCDMA<E_Linux_USB_Driver_User_Guide_V1.6.pdf>>,<<Quectel_Android_RIL_Driver_User_Guide_V1.6.pdf>>和"reference-ril"文件夹,自己改了源码,大致流程如下: 在配置内核功能make menuconfig时中打开一些usb和ppp相关功能; 在内核的drivers目录下修改一些和usb相关的源码,将ec20的设备号加进去; 修改文件系统的/system/core/rootdir/init.rc,修改增加一些服务; 用致远提供的reference-ril替换自带的reference-ril目录. 在下午编译了一个自己的固件,我大致推算了一下时间,编译一次文件系统大概要3个多小时.
在触摸屏无法使用后,我刷上了自己编译的内核和文件系统,一切正常,然后开始调试4g流量共享以太网口了.
因为论坛字数限制,后面部分在楼下写
|