700MHz的5G基站,需要换用新的5G模组.移远通信的RM500U模组正好可以满足我们的使用要求;双卡单待 支持SIM卡热插拔 支持中国广电700MHz基站 版本升级方便
tar -xvf Quectel_Linux_USB_Serial_Option_Driver_20211012.tgz
20211012,其中存放着各个版本的驱动源码,如下
3.17.0,我就选择v3.17.1版本的驱动# 查看内核版本
$ uname -a
Linux (none) 3.17.0-xilinx #1 SMP PREEMPT Fri Nov 3 11:57:52 CST 2017 armv7l GNU/Linux
# 选择版本最接近的驱动
$ cd 20211012/v3.17.1/
RM500U-CN模组,还需要自己在源码中手动添加对RM500U-CN模组的支持,难道是因为这个模组比较新,驱动还未更新?(2022/7/16)drivers/usb/serial/option.c,添加对RM500U-CN模组的支持lsusb命令可以看到模组对应的PID和VID分别为0x2C7C和0x0900,将其添加到option.c的option_ids[]数组中,如下图:
$ mkdir install
# 指明内核源码路径,这里因为有些敏感信息,我隐藏了一部分路径,修改成自己的源码路径即可
KERNELDIR := /***/***/***/***/***/kernel/build/linux-***-v2014.4 # 内核源码路径
PWD := $(shell pwd)
obj-m+=./drivers/usb/serial/option.o
obj-m+=./drivers/usb/serial/usb_wwan.o
obj-m+=./drivers/usb/serial/qcserial.o
modules: clean
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
install: modules
# 这里表示编译完成后,执行make install时将驱动拷贝到步骤2.4自定义的路径下
cp $(PWD)/drivers/usb/serial/*.ko ./install
clean:
$(MAKE) -C $(KERNELDIR) M=$(PWD) clean
# make install ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi-
$ ls install/
option.ko qcserial.ko usb_wwan.ko
# insmod usb_wwan.ko
# insmod option.ko
# insmod qcserial.ko
/dev目录下产生5个ttyUSB,dmesg如下:# dmesg | grep ttyUSB*
[ 1121.543526] usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB9
[ 1121.593404] usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB10
[ 1121.614269] usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB11
[ 1121.655317] usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB12
[ 1121.684846] usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB13
ifconfig看不到5G模组对应的interface,这是什么原因呢?USB NCM驱动,但是我司的嵌入式设备上使用的是cdc_ether驱动,需要修改5G模组的模式minicom 或 microcom输入如下AT指令,并重启模组(minicom或microcom如何使用这里就不赘述了,网上资料一大堆):# minicom -D /dev/ttyUSB11
AT+QCFG="usbnet",1 # 重启模组生效
[ 1121.500432] cdc_ether 1-1.1:1.0 usb0: register 'cdc_ether' at usb-zynq-ehci.0-1.1, CDC Ethernet Device, 3e:37:f1:99:c9:6e
# 如使用RNDIS驱动,需要执行如下AT指令
AT+QCFG="usbnet",3
# 如使用NCM驱动,需要执行如下AT指令
AT+QCFG="usbnet",5
#查询卡是否成功识别
AT+CPIN?
+CPIN: READY
OK
#查询APN
AT+CGDCONT?
+CGDCONT: 1,"IPV4V6","3gnet","0.0.0.0",0,0,0,0,,,,,,0,,,0,,0,0,0,0
+CGDCONT: 11,"IPV4V6","ims","0.0.0.0",0,0,0,0,,,,,,0,,,0,,0,0,0,0
OK
#查询运营商
AT+QSPN
+QSPN: "CHN-UNICOM","UNICOM","CHN-UNICOM",0,"46001"
OK
#设置APN
AT+CGDCONT=1,"IP","3gnet"
OK
#查询网络信息:访问计数,运营商,频段
AT+QNWINFO
+QNWINFO: "FDD LTE",46001,"LTE BAND 3",1506
+QNWINFO: "NR5G-NSA",46001,"",0
OK
#查询网络配置优先级
AT+QNWPREFCFG="mode_pref"
+QNWPREFCFG: "mode_pref",AUTO
OK
#设置NSA入网
AT+QNWPREFCFG="mode_pref",NR5G-NSA
OK
#设置SA入网
AT+QNWPREFCFG="mode_pref",NR5G-SA
OK
#设置模组自动选择入网方式及优先级
AT+QNWPREFCFG="mode_pref",AUTO
OK
#拨号
AT+QNETDEVCTL=1,1,0
OK
#查询IP
AT+CGPADDR
+CGPADDR: 1,"10.66.98.208"
+CGPADDR: 11,""
OK
#查询信号强度NSA
AT+QENG="servingcell"
+QENG: "servingcell", "NOCONN"
+QENG: "LTE","FDD",460,01,B61D52,312,350,1,3,3,184B,-88,-9,-62,8,12,0,37
+QENG: "NR5G-NSA",460,01,589,-88,17,-3,627264,78,0,6219,1
OK
#查询信号强度SA
AT+QENG="servingcell"
+QENG: "servingcell","NOCONN","NR5G-SA","TDD",460,11,596961006,341,590E02,627264,78,100,-88,-10,5,20,28,1
OK
#查询运营商
AT+QSPN
+QSPN: "CHN-UNICOM","UNICOM","CHN-UNICOM",0,"46001"
OK
#查询运营商的另一种方法
AT+COPS=3,1
OK
AT+COPS?
+COPS: 0,1,"CUCC",13
OK
#查询当前使用的卡槽
AT+QUIMSLOT?
+QUIMSLOT: 1
OK
#切换为卡槽2
AT+QUIMSLOT=2
OK
#切换为卡槽1
AT+QUIMSLOT=1
OK
#查看模组温度
AT+QTEMP
+QTEMP: "soc-thermal","33"
+QTEMP: "pa-thermal","31"
+QTEMP: "pa5g-thermal","31"
+QTEMP: "board-thermal","32"
OK
#设置用户名,密码,鉴权方式
AT+QICSGP=1,3,"3gnet","cogent","cogent",2
OK
#查询用户名,密码,鉴权方式
AT+QICSGP?
+QICSGP: 1,1,"cmnet","user","passwd",3
OK
#开启热插拔,使用该指令时模组中不能插卡
AT+QSIMDET=1,1
#查看热插拔状态
AT+QSIMDET?
NOTE:
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。问题1)我想知道rubyonrails是否有功能类似于primefaces的gem。我问的原因是如果您使用primefaces(http://www.primefaces.org/showcase-labs/ui/home.jsf),开发人员无需担心javascript或jquery的东西。据我所知,JSF是一个规范,基于规范的各种可用实现,prim
本教程将在Unity3D中混合Optitrack与数据手套的数据流,在人体运动的基础上,添加双手手指部分的运动。双手手背的角度仍由Optitrack提供,数据手套提供双手手指的角度。 01 客户端软件分别安装MotiveBody与MotionVenus并校准人体与数据手套。MotiveBodyMotionVenus数据手套使用、校准流程参照:https://gitee.com/foheart_1/foheart-h1-data-summary.git02 数据转发打开MotiveBody软件的Streaming,开始向Unity3D广播数据;MotionVenus中设置->选项选择Unit
我给自己买了一个新的8gigUSBkey,我正在寻找一个合适的解决方案来拥有一个可移植RoR环境来学习。我在谷歌上搜索了一下,发现了一些可能性,但我很想听听一些现实生活中的经历和意见。谢谢! 最佳答案 我喜欢InstantRails,非常容易使用,无需安装程序,也不会修改您的系统环境。 关于ruby-on-rails-可移植RubyonRails环境,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/q
我使用的是最新版本的Chrome(32.0.1700.107)和Chrome驱动程序(V2.8)。但是当我在Ruby中使用以下代码运行示例测试时:require'selenium-webdriver'WAIT=Selenium::WebDriver::Wait.new(timeout:100)$driver=Selenium::WebDriver.for:chrome$driver.manage.window.maximize$driver.navigate.to'https://www.google.co.in'defapps_hoverele_hover=$driver.find_
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。多年来,我一直在使用多种语言进行编程,并且认为自己总体上相当擅长。但是,我从未编写过任何自动化测试:没有单元测试,没有TDD,没有BDD,什么都没有。我已经尝试开始为我的项目编写适当的测试套件。我可以看到在进行任何更改后能够自动测试项目中所有代码的理论值(value)。我可以看到像RSpec和Mocha这样的测试框架应该如何使设置和运行所述测试变得相当容易
如果我在功能规范中调用url_for,它会返回一个以http://www.example.com/开头的绝对URL.Capybara会很乐意尝试加载该站点上的页面,但这与我的应用程序无关。以下是重现该问题的最少步骤:从这个Gemfile开始:source'https://rubygems.org'gem"sqlite3"gem"jquery-rails"gem"draper"gem"rails",'4.1.0'gem"therubyracer"gem"uglifier"gem"rspec-rails"gem"capybara"gem"poltergeist"gem"launchy"运行
我正在使用一个用RubyonRails构建的应用程序,目前错误处理非常差。如果通过ajax执行Controller方法,并且该方法导致500(或404或任何其他响应),则呈现500.html页面并将其作为AJAX请求的结果返回。显然,javascript不知道如何处理该HTML,网页看起来只是在等待响应。在AJAX调用期间发生错误时,rails是否有一种简单的方法来呈现error.rjs模板? 最佳答案 您可以在Controller的rescue_action或rescue_action_in_public方法中使用respond_
在笔者前面有一篇文章《驱动开发:断链隐藏驱动程序自身》通过摘除驱动的链表实现了断链隐藏自身的目的,但此方法恢复时会触发PG会蓝屏,偶然间在网上找到了一个作者介绍的一种方法,觉得有必要详细分析一下他是如何实现的进程隐藏的,总体来说作者的思路是最终寻找到MiProcessLoaderEntry的入口地址,该函数的作用是将驱动信息加入链表和移除链表,运用这个函数即可动态处理驱动的添加和移除问题。MiProcessLoaderEntry(pDriverObject->DriverSection,1)添加MiProcessLoaderEntry(pDriverObject->DriverSection,
我是Rails的新手,正在使用Rails4。在我的应用程序中,我想返回所有JSON格式的404和500错误{"status":404,"message":"notfound"}有一个简单的方法可以做到这一点吗?因为我只是找到了使用rails3.x执行此操作的解决方案。谢谢我正在尝试执行此解决方案NeedtoreturnJSON-formatted404errorinRails但我在故障安全响应期间收到错误:未初始化的常量ErrorsController 最佳答案 也许您正在寻找这个:render:json=>@error_objec
我有一个适用于事件/监听器模型的应用程序。发布了几种不同类型的数据(事件),然后许多不同的事情可能需要也可能不需要对该数据(监听器)采取行动。监听器的发生没有特定的顺序,每个监听器将决定是否需要对事件采取行动。Rails应用程序有哪些工具可以完成此任务?我希望自己不必这样做(尽管我可以。这没什么大不了的。)编辑:观察者模式可能是更好的选择 最佳答案 查看EventMachine.它是一个非常流行的Ruby事件处理库。它看起来相当不错,而且很多其他库似乎都在利用它(Cramp)。这是一个很好的介绍:http://rubylearnin