cleanup, initial commit

This commit is contained in:
Robin Reyes 2024-07-09 17:06:06 +08:00 committed by Sean Khan
parent 4b1cb1d940
commit 0c0f106c6b
81 changed files with 16560 additions and 14105 deletions

View File

@ -8,7 +8,7 @@
include $(TOPDIR)/rules.mk
LUCI_TITLE:=PCI Modem Server
LUCI_DEPENDS:=+kmod-pcie_mhi +pciutils +quectel-CM-5G
LUCI_DEPENDS:=+kmod-pcie_mhi +pciutils +quectel-cm
include $(TOPDIR)/feeds/luci/luci.mk

View File

@ -8,11 +8,11 @@
include $(TOPDIR)/rules.mk
LUCI_TITLE:=Modem Server
LUCI_DEPENDS:=+luci-compat +quectel-CM-5G +kmod-usb-acm \
LUCI_DEPENDS:=+luci-compat +quectel-cm +kmod-usb-acm \
+kmod-usb-net-cdc-ether +kmod-usb-net-cdc-mbim \
+kmod-usb-net-qmi-wwan +kmod-usb-net-rndis \
+kmod-usb-serial-option +kmod-usb-wdm \
+kmod-qmi_wwan_f +kmod-qmi_wwan_q
+kmod-qmi_wwan_q
include $(TOPDIR)/feeds/luci/luci.mk

View File

@ -0,0 +1,8 @@
include $(TOPDIR)/rules.mk
LUCI_TITLE:=Support for Quectel WWAN modules
LUCI_DEPENDS:=+quectel-cm
include $(TOPDIR)/feeds/luci/luci.mk
# call BuildPackage - OpenWrt buildroot signature

View File

@ -0,0 +1,124 @@
'use strict';
'require rpc';
'require form';
'require network';
var callFileList = rpc.declare({
object: 'file',
method: 'list',
params: [ 'path' ],
expect: { entries: [] },
filter: function(list, params) {
var rv = [];
for (var i = 0; i < list.length; i++)
if (list[i].name.match(/^cdc-wdm/))
rv.push(params.path + list[i].name);
return rv.sort();
}
});
network.registerPatternVirtual(/^quectel-.+$/);
network.registerErrorCode('CALL_FAILED', _('Call failed'));
network.registerErrorCode('NO_CID', _('Unable to obtain client ID'));
network.registerErrorCode('PLMN_FAILED', _('Setting PLMN failed'));
return network.registerProtocol('quectel', {
getI18n: function() {
return _('Quectel Cellular');
},
getIfname: function() {
return this._ubus('l3_device') || 'quectel-%s'.format(this.sid);
},
getOpkgPackage: function() {
return 'quectel-cm';
},
isFloating: function() {
return true;
},
isVirtual: function() {
return true;
},
getDevices: function() {
return null;
},
containsDevice: function(ifname) {
return (network.getIfnameOf(ifname) == this.getIfname());
},
renderFormOptions: function(s) {
var dev = this.getL3Device() || this.getDevice(), o;
o = s.taboption('general', form.Value, '_modem_device', _('Modem device'));
o.ucioption = 'device';
o.rmempty = false;
o.load = function(section_id) {
return callFileList('/dev/').then(L.bind(function(devices) {
for (var i = 0; i < devices.length; i++)
this.value(devices[i]);
return form.Value.prototype.load.apply(this, [section_id]);
}, this));
};
o = s.taboption('general', form.Value, 'apn', _('APN'));
o.validate = function(section_id, value) {
if (value == null || value == '')
return true;
if (!/^[a-zA-Z0-9\-.]*[a-zA-Z0-9]$/.test(value))
return _('Invalid APN provided');
return true;
};
o = s.taboption('general', form.Value, 'pincode', _('PIN'));
o.datatype = 'and(uinteger,minlength(4),maxlength(8))';
o = s.taboption('general', form.ListValue, 'auth', _('Authentication Type'));
o.value('mschapv2', 'MsChapV2');
o.value('pap', 'PAP');
o.value('chap', 'CHAP');
o.value('none', 'NONE');
o.default = 'none';
o = s.taboption('general', form.Value, 'username', _('PAP/CHAP username'));
o.depends('auth', 'pap');
o.depends('auth', 'chap');
o.depends('auth', 'mschapv2');
o = s.taboption('general', form.Value, 'password', _('PAP/CHAP password'));
o.depends('auth', 'pap');
o.depends('auth', 'chap');
o.depends('auth', 'mschapv2');
o.password = true;
o = s.taboption('advanced', form.Value, 'delay', _('Modem init timeout'),
_('Maximum amount of seconds to wait for the modem to become ready'));
o.placeholder = '10';
o.datatype = 'min(1)';
o = s.taboption('advanced', form.Value, 'mtu', _('Override MTU'));
o.placeholder = dev ? (dev.getMTU() || '1500') : '1500';
o.datatype = 'max(9200)';
o = s.taboption('general', form.ListValue, 'pdptype', _('PDP Type'));
o.value('ipv4v6', 'IPv4/IPv6');
o.value('ipv4', 'IPv4');
o.value('ipv6', 'IPv6');
o.default = 'ipv4v6';
o = s.taboption('advanced', form.Flag, 'defaultroute', _('Use default gateway'),
_('If unchecked, no default route is configured'));
o.default = o.enabled;
o = s.taboption('advanced', form.Value, 'metric', _('Use gateway metric'));
o.placeholder = '0';
o.datatype = 'uinteger';
o.depends('defaultroute', '1');
}
});

View File

@ -0,0 +1,35 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=quectel-cm
PKG_VERSION:=1.6.5
PKG_RELEASE:=2
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/cmake.mk
define Package/quectel-cm
SECTION:=net
CATEGORY:=Network
SUBMENU:=WWAN
TITLE:=Qconnector Manager for Quectel WWAN modules
DEPENDS:= \
+kmod-usb-net-cdc-mbim \
+kmod-usb-net-qmi-wwan \
++kmod-qmi_wwan_q \
+kmod-usb-serial-option
endef
define Package/quectel-cm/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/quectel-CM $(1)/usr/bin/quectel-cm
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/quectel-{mbim,qmi}-proxy $(1)/usr/bin/
$(INSTALL_DIR) $(1)/lib/netifd/proto
$(INSTALL_BIN) ./files/quectel.sh $(1)/lib/netifd/proto/
$(INSTALL_DIR) $(1)/etc/hotplug.d/net
$(INSTALL_BIN) ./files/smp-affinity-mhi-pcie.sh $(1)/etc/hotplug.d/net/21-smp-affinity-mhi-pcie
$(INSTALL_BIN) ./files/smp-affinity-qmi-usb.sh $(1)/etc/hotplug.d/net/22-smp-affinity-qmi-usb
endef
$(eval $(call BuildPackage,quectel-cm))

View File

@ -0,0 +1,138 @@
#!/bin/sh
[ -n "$INCLUDE_ONLY" ] || {
. /lib/functions.sh
. ../netifd-proto.sh
init_proto "$@"
}
proto_quectel_init_config() {
available=1
no_device=1
proto_config_add_string "device:device"
proto_config_add_string "apn"
proto_config_add_string "auth"
proto_config_add_string "username"
proto_config_add_string "password"
proto_config_add_string "pincode"
proto_config_add_int "delay"
proto_config_add_string "pdptype"
proto_config_add_boolean "dhcp"
proto_config_add_boolean "dhcpv6"
proto_config_add_boolean "sourcefilter"
proto_config_add_boolean "delegate"
proto_config_add_int "mtu"
proto_config_add_defaults
}
proto_quectel_setup() {
local interface="$1"
local device apn auth username password pincode delay pdptype
local dhcp dhcpv6 sourcefilter delegate mtu $PROTO_DEFAULT_OPTIONS
local ip4table ip6table
local pid zone
json_get_vars device apn auth username password pincode delay
json_get_vars pdptype dhcp dhcpv6 sourcefilter delegate ip4table
json_get_vars ip6table mtu $PROTO_DEFAULT_OPTIONS
[ -n "$delay" ] && sleep "$delay"
[ -n "$metric" ] || metric="0"
[ -z "$ctl_device" ] || device="$ctl_device"
[ -n "$device" ] || {
echo "No control device specified"
proto_notify_error "$interface" NO_DEVICE
proto_set_available "$interface" 0
return 1
}
device="$(readlink -f "$device")"
[ -c "$device" ] || {
echo "The specified control device does not exist"
proto_notify_error "$interface" NO_DEVICE
proto_set_available "$interface" 0
return 1
}
devname="$(basename "$device")"
devpath="$(readlink -f "/sys/class/usbmisc/$devname/device/")"
ifname="$(ls "$devpath/net" 2>"/dev/null")"
[ -n "$ifname" ] || {
echo "The interface could not be found."
proto_notify_error "$interface" NO_IFACE
proto_set_available "$interface" 0
return 1
}
[ "$pdptype" = "ip" -o "$pdptype" = "ipv4v6" ] && ipv4opt="-4"
[ "$pdptype" = "ipv6" -o "$pdptype" = "ipv4v6" ] && ipv6opt="-6"
[ -n "$auth" ] || auth="none"
eval "proto_run_command '$interface' /usr/bin/quectel-cm -i '$ifname' $ipv4opt $ipv6opt ${pincode:+-p $pincode} -s '$apn' '$username' '$password' '$auth'"
sleep 5
ifconfig "$ifname" up
ifconfig "${ifname}_1" &>"/dev/null" && ifname="${ifname}_1"
if [ -n "$mtu" ]; then
echo "Setting MTU to $mtu"
/sbin/ip link set dev "$ifname" mtu "$mtu"
fi
echo "Setting up $ifname"
proto_init_update "$ifname" 1
proto_set_keep 1
proto_send_update "$interface"
zone="$(fw3 -q network "$interface" 2>/dev/null)"
if [ "$pdptype" = "ipv6" ] || [ "$pdptype" = "ipv4v6" ]; then
json_init
json_add_string name "${interface}_6"
json_add_string ifname "@$interface"
[ "$pdptype" = "ipv4v6" ] && json_add_string iface_464xlat "0"
json_add_string proto "dhcpv6"
proto_add_dynamic_defaults
[ -z "$ip6table" ] || json_add_string ip6table "$ip6table"
# RFC 7278: Extend an IPv6 /64 Prefix to LAN
json_add_string extendprefix 1
[ "$delegate" = "0" ] && json_add_boolean delegate "0"
[ "$sourcefilter" = "0" ] && json_add_boolean sourcefilter "0"
[ -z "$zone" ] || json_add_string zone "$zone"
json_close_object
ubus call network add_dynamic "$(json_dump)"
fi
if [ "$pdptype" = "ip" ] || [ "$pdptype" = "ipv4v6" ]; then
json_init
json_add_string name "${interface}_4"
json_add_string ifname "@$interface"
json_add_string proto "dhcp"
[ -z "$ip4table" ] || json_add_string ip4table "$ip4table"
proto_add_dynamic_defaults
[ -z "$zone" ] || json_add_string zone "$zone"
json_close_object
ubus call network add_dynamic "$(json_dump)"
fi
}
proto_quectel_teardown() {
local interface="$1"
local device
json_get_vars device
[ -z "$ctl_device" ] || device="$ctl_device"
echo "Stopping network $interface"
proto_kill_command "$interface"
proto_init_update "*" 0
proto_send_update "$interface"
}
[ -n "$INCLUDE_ONLY" ] || {
add_protocol quectel
}

View File

@ -0,0 +1,24 @@
#!/bin/sh
[ "$ACTION" = add ] || exit
echo "$INTERFACE" | grep -q "rmnet_mhi" || exit
core_count="$(grep -c "processor" "/proc/cpuinfo")"
irq_path="/sys/class/net/$INTERFACE/queues"
devnum="$(echo "${INTERFACE%.*}" | grep -Eo "[0-9]+")"
core="$(( devnum % (core_count - 1) + 1))"
if [ "$INTERFACE" != "${INTERFACE%.*}" ]; then
if [ "$core" -lt "$(( core_count - 1 ))" ]; then
let core++
else
core="1"
fi
fi
irq="$(printf "%x" "$((1 << core))")"
echo "$irq" > "$irq_path/rx-0/rps_cpus"
echo "4096" > "$irq_path/rx-0/rps_flow_cnt"
echo "2000" > "/proc/sys/net/core/netdev_max_backlog"
exit 0

View File

@ -0,0 +1,24 @@
#!/bin/sh
[ "$ACTION" = add ] || exit
echo "$INTERFACE" | grep -q "wwan" || exit
core_count="$(grep -c "processor" "/proc/cpuinfo")"
irq_path="/sys/class/net/$INTERFACE/queues"
devnum="$(echo "${INTERFACE%_*}" | grep -Eo "[0-9]+")"
core="$(( devnum % (core_count - 1) + 1))"
if [ "$INTERFACE" != "${INTERFACE%_*}" ]; then
if [ "$core" -lt "$(( core_count - 1 ))" ]; then
let core++
else
core="1"
fi
fi
irq="$(printf "%x" "$((1 << core))")"
echo "$irq" > "$irq_path/rx-0/rps_cpus"
echo "4096" > "$irq_path/rx-0/rps_flow_cnt"
echo "2000" > "/proc/sys/net/core/netdev_max_backlog"
exit 0

View File

@ -5,7 +5,7 @@ add_definitions(-Wall -Wextra -Werror -O1)
option(USE_QRTR "Enable QRTR" OFF)
set( QL_CM_SRC
QmiWwanCM.c GobiNetCM.c main.c MPQMUX.c QMIThread.c util.c qmap_bridge_mode.c mbim-cm.c device.c
QmiWwanCM.c GobiNetCM.c main.c QCQMUX.c QMIThread.c util.c qmap_bridge_mode.c mbim-cm.c device.c
atc.c atchannel.c at_tok.c
udhcpc.c
)

View File

@ -1,5 +1,5 @@
bin_PROGRAMS = quectel-CM
QL_CM_SRC=QmiWwanCM.c GobiNetCM.c main.c MPQMUX.c QMIThread.c util.c qmap_bridge_mode.c mbim-cm.c device.c
QL_CM_SRC=QmiWwanCM.c GobiNetCM.c main.c QCQMUX.c QMIThread.c util.c qmap_bridge_mode.c mbim-cm.c device.c
QL_CM_SRC+=atc.c atchannel.c at_tok.c
#QL_CM_SRC+=qrtr.c rmnetctl.c
QL_CM_DHCP=udhcpc.c

View File

@ -0,0 +1,71 @@
root@ZhuoTK:/# dmesg
[ 788.920000] usb 1-1.3: new high-speed USB device number 4 using ehci-platform
[ 789.160000] cdc_mbim 1-1.3:1.4: cdc-wdm0: USB WDM device
[ 789.170000] cdc_mbim 1-1.3:1.4 wwan0: register 'cdc_mbim' at usb-101c0000.ehci-1.3, CDC MBIM, a2:58:dc:4d:dd:ca
root@ZhuoTK:/# quectel-CM -s cmnet &
[04-13_05:24:38:767] Quectel_QConnectManager_Linux_V1.6.0.25
[04-13_05:24:38:769] Find /sys/bus/usb/devices/1-1.3 idVendor=0x2c7c idProduct=0x125, bus=0x001, dev=0x004
[04-13_05:24:38:771] Auto find qmichannel = /dev/cdc-wdm0
[04-13_05:24:38:771] Auto find usbnet_adapter = wwan0
[04-13_05:24:38:771] netcard driver = cdc_mbim, driver version = 22-Aug-2005
[04-13_05:24:38:771] Modem works in MBIM mode
[04-13_05:24:38:779] cdc_wdm_fd = 7
[04-13_05:24:38:779] mbim_open_device()
[04-13_05:24:39:624] mbim_device_caps_query()
[04-13_05:24:39:656] DeviceId: 866758045439136
[04-13_05:24:39:656] FirmwareInfo: EC25EFAR06A11M4G
[04-13_05:24:39:656] HardwareInfo: QUECTEL Mobile Broadband Modul
[04-13_05:24:39:657] mbim_device_services_query()
[04-13_05:24:39:688] mbim_set_radio_state( 1 )
[04-13_05:24:39:721] HwRadioState: 1, SwRadioState: 1
[04-13_05:24:39:721] mbim_subscriber_status_query()
[04-13_05:24:39:784] SubscriberId: 460028563800461
[04-13_05:24:39:784] SimIccId: 89860015120716380461
[04-13_05:24:39:785] SubscriberReadyState NotInitialized -> Initialized
[04-13_05:24:39:785] mbim_register_state_query()
[04-13_05:24:39:816] RegisterState Unknown -> Home
[04-13_05:24:39:816] mbim_packet_service_query()
[04-13_05:24:39:848] PacketServiceState Unknown -> Attached
[04-13_05:24:39:848] mbim_query_connect(sessionID=0)
[04-13_05:24:39:880] ActivationState Unknown -> Deactivated
[04-13_05:24:39:881] ifconfig wwan0 0.0.0.0
[04-13_05:24:39:899] ifconfig wwan0 down
[04-13_05:24:39:913] mbim_set_connect(onoff=1, sessionID=0)
[04-13_05:24:39:976] ActivationState Deactivated -> Activated
[04-13_05:24:39:977] mbim_ip_config(sessionID=0)
[04-13_05:24:40:008] < SessionId = 0
[04-13_05:24:40:008] < IPv4ConfigurationAvailable = 0xf
[04-13_05:24:40:008] < IPv6ConfigurationAvailable = 0x0
[04-13_05:24:40:008] < IPv4AddressCount = 0x1
[04-13_05:24:40:008] < IPv4AddressOffset = 0x3c
[04-13_05:24:40:009] < IPv6AddressCount = 0x0
[04-13_05:24:40:009] < IPv6AddressOffset = 0x0
[04-13_05:24:40:009] < IPv4 = 10.129.90.29/30
[04-13_05:24:40:009] < gw = 10.129.90.30
[04-13_05:24:40:009] < dns1 = 211.138.180.2
[04-13_05:24:40:009 < dns2 = 211.138.180.3
[04-13_05:24:40:009] < ipv4 mtu = 1500
[04-13_05:24:40:041] ifconfig wwan0 up
[04-13_05:24:40:063] ip -4 address flush dev wwan0
[04-13_05:24:40:073] ip -4 address add 10.129.90.29/30 dev wwan0
[04-13_05:24:40:084] ip -4 route add default via 10.129.90.30 dev wwan0
root@ZhuoTK:/# ifconfig wwan0
wwan0 Link encap:Ethernet HWaddr A2:58:DC:4D:DD:CA
inet addr:10.129.90.29 Bcast:0.0.0.0 Mask:255.255.255.252
inet6 addr: fe80::a058:dcff:fe4d:ddca/64 Scope:Link
UP BROADCAST RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:5 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:380 (380.0 B)
root@ZhuoTK:/# ip ro show
default via 10.129.90.30 dev wwan0
10.129.90.28/30 dev wwan0 proto kernel scope link src 10.129.90.29
192.168.1.0/24 dev br-lan proto kernel scope link src 192.168.1.251
root@ZhuoTK:/# ping www.qq.com
PING www.qq.com (183.194.238.117): 56 data bytes
64 bytes from 183.194.238.117: seq=0 ttl=53 time=58.674 ms

View File

@ -0,0 +1,168 @@
root@ZhuoTK:/# dmesg
[ 788.920000] usb 1-1.3: new high-speed USB device number 4 using ehci-platform
[ 789.160000] cdc_mbim 1-1.3:1.4: cdc-wdm0: USB WDM device
[ 789.170000] cdc_mbim 1-1.3:1.4 wwan0: register 'cdc_mbim' at usb-101c0000.ehci-1.3, CDC MBIM, a2:58:dc:4d:dd:ca
root@ZhuoTK:/# ip link add link wwan0 name wwan0.1 type vlan id 1
root@ZhuoTK:/# ip link add link wwan0 name wwan0.2 type vlan id 2
root@ZhuoTK:/# ifconfig wwan0.1
wwan0.1 Link encap:Ethernet HWaddr A2:58:DC:4D:DD:CA
BROADCAST NOARP MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
root@ZhuoTK:/# ifconfig wwan0.2
wwan0.2 Link encap:Ethernet HWaddr A2:58:DC:4D:DD:CA
BROADCAST NOARP MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
root@ZhuoTK:/# quectel-mbim-proxy &
root@ZhuoTK:/# [04-13_07:04:27:543] mbim_dev_fd=3
[04-13_07:04:27:543] mbim_send_open_msg()
[04-13_07:04:28:321] receive MBIM_OPEN_DONE, status=0
[04-13_07:04:28:321] mbim_server_fd=4
root@ZhuoTK:/# quectel-CM -n 1 -s cmnet &
[04-13_07:04:34:256] Quectel_QConnectManager_Linux_V1.6.0.25
[04-13_07:04:34:259] Find /sys/bus/usb/devices/1-1.3 idVendor=0x2c7c idProduct=0x125, bus=0x001, dev=0x004
[04-13_07:04:34:260] Auto find qmichannel = /dev/cdc-wdm0
[04-13_07:04:34:260] Auto find usbnet_adapter = wwan0
[04-13_07:04:34:260] netcard driver = cdc_mbim, driver version = 22-Aug-2005
[04-13_07:04:34:261] mbim_qmap_mode = 4, vlan_id = 0x01, qmap_netcard = wwan0.1
[04-13_07:04:34:261] Modem works in MBIM mode
[04-13_07:04:34:261] handle_client_connect client_fd=5, client_idx=1
[04-13_07:04:34:262] connect to quectel-mbim-proxy sockfd = 7
[04-13_07:04:34:262] cdc_wdm_fd = 7
[04-13_07:04:34:262] mbim_open_device()
[04-13_07:04:35:106] mbim_device_caps_query()
[04-13_07:04:35:139] DeviceId: 866758045439136
[04-13_07:04:35:139] FirmwareInfo: EC25EFAR06A11M4G
[04-13_07:04:35:139] HardwareInfo: QUECTEL Mobile Broadband Modul
[04-13_07:04:35:139] mbim_device_services_query()
[04-13_07:04:35:170] mbim_set_radio_state( 1 )
[04-13_07:04:35:202] HwRadioState: 1, SwRadioState: 1
[04-13_07:04:35:202] mbim_subscriber_status_query()
[04-13_07:04:35:267] SubscriberId: 460028563800461
[04-13_07:04:35:267] SimIccId: 89860015120716380461
[04-13_07:04:35:267] SubscriberReadyState NotInitialized -> Initialized
[04-13_07:04:35:267] mbim_register_state_query()
[04-13_07:04:35:297] RegisterState Unknown -> Home
[04-13_07:04:35:298] mbim_packet_service_query()
[04-13_07:04:35:329] PacketServiceState Unknown -> Attached
[04-13_07:04:35:330] mbim_query_connect(sessionID=1)
[04-13_07:04:35:361] ActivationState Unknown -> Deactivated
[04-13_07:04:35:362] ifconfig wwan0.1 0.0.0.0
[04-13_07:04:35:373] ifconfig wwan0.1 down
[04-13_07:04:35:383] mbim_set_connect(onoff=1, sessionID=1)
[04-13_07:04:35:426] ActivationState Deactivated -> Activated
[04-13_07:04:35:426] mbim_ip_config(sessionID=1)
[04-13_07:04:35:457] < SessionId = 1
[04-13_07:04:35:457] < IPv4ConfigurationAvailable = 0xf
[04-13_07:04:35:457] < IPv6ConfigurationAvailable = 0x0
[04-13_07:04:35:457] < IPv4AddressCount = 0x1
[04-13_07:04:35:458] < IPv4AddressOffset = 0x3c
[04-13_07:04:35:458] < IPv6AddressCount = 0x0
[04-13_07:04:35:458] < IPv6AddressOffset = 0x0
[04-13_07:04:35:458] < IPv4 = 10.129.90.29/30
[04-13_07:04:35:458] < gw = 10.129.90.30
[04-13_07:04:35:458] < dns1 = 211.138.180.2
[04-13_07:04:35:458] < dns2 = 211.138.180.3
[04-13_07:04:35:458] < ipv4 mtu = 1500
[04-13_07:04:35:489] ifconfig wwan0 up
[04-13_07:04:35:509] ifconfig wwan0.1 down
[04-13_07:04:35:522] ifconfig wwan0.1 up
[04-13_07:04:35:535] ip -4 address flush dev wwan0.1
[04-13_07:04:35:545] ip -4 address add 10.129.90.29/30 dev wwan0.1
[04-13_07:04:35:556] ip -4 route add default via 10.129.90.30 dev wwan0.1
root@ZhuoTK:/# quectel-CM -n 2 -s 4gnet &
[04-13_07:04:45:150] Quectel_QConnectManager_Linux_V1.6.0.25
[04-13_07:04:45:152] Find /sys/bus/usb/devices/1-1.3 idVendor=0x2c7c idProduct=0x125, bus=0x001, dev=0x004
[04-13_07:04:45:154] Auto find qmichannel = /dev/cdc-wdm0
[04-13_07:04:45:154] Auto find usbnet_adapter = wwan0
[04-13_07:04:45:154] netcard driver = cdc_mbim, driver version = 22-Aug-2005
[04-13_07:04:45:155] mbim_qmap_mode = 4, vlan_id = 0x02, qmap_netcard = wwan0.2
[04-13_07:04:45:155] Modem works in MBIM mode
[04-13_07:04:45:155] handle_client_connect client_fd=6, client_idx=2
[04-13_07:04:45:156] connect to quectel-mbim-proxy sockfd = 7
[04-13_07:04:45:156] cdc_wdm_fd = 7
[04-13_07:04:45:156] mbim_open_device()
[04-13_07:04:46:025] mbim_device_caps_query()
[04-13_07:04:46:056] DeviceId: 866758045439136
[04-13_07:04:46:056] FirmwareInfo: EC25EFAR06A11M4G
[04-13_07:04:46:056] HardwareInfo: QUECTEL Mobile Broadband Modul
[04-13_07:04:46:056] mbim_device_services_query()
[04-13_07:04:46:088] mbim_set_radio_state( 1 )
[04-13_07:04:46:119] HwRadioState: 1, SwRadioState: 1
[04-13_07:04:46:119] mbim_subscriber_status_query()
[04-13_07:04:46:183] SubscriberId: 460028563800461
[04-13_07:04:46:184] SimIccId: 89860015120716380461
[04-13_07:04:46:184] SubscriberReadyState NotInitialized -> Initialized
[04-13_07:04:46:184] mbim_register_state_query()
[04-13_07:04:46:216] RegisterState Unknown -> Home
[04-13_07:04:46:216] mbim_packet_service_query()
[04-13_07:04:46:248] PacketServiceState Unknown -> Attached
[04-13_07:04:46:248] mbim_query_connect(sessionID=2)
[04-13_07:04:46:280] ActivationState Unknown -> Deactivated
[04-13_07:04:46:280] ifconfig wwan0.2 0.0.0.0
[04-13_07:04:46:291] ifconfig wwan0.2 down
[04-13_07:04:46:304] mbim_set_connect(onoff=1, sessionID=2)
[04-13_07:04:46:504] ActivationState Deactivated -> Activated
[04-13_07:04:46:505] mbim_ip_config(sessionID=2)
[04-13_07:04:46:537] < SessionId = 2
[04-13_07:04:46:537] < IPv4ConfigurationAvailable = 0xf
[04-13_07:04:46:537] < IPv6ConfigurationAvailable = 0x0
[04-13_07:04:46:538] < IPv4AddressCount = 0x1
[04-13_07:04:46:538] < IPv4AddressOffset = 0x3c
[04-13_07:04:46:538] < IPv6AddressCount = 0x0
[04-13_07:04:46:538] < IPv6AddressOffset = 0x0
[04-13_07:04:46:538] < IPv4 = 10.129.37.205/30
[04-13_07:04:46:538] < gw = 10.129.37.206
[04-13_07:04:46:538] < dns1 = 211.138.180.2
[04-13_07:04:46:538] < dns2 = 211.138.180.3
[04-13_07:04:46:538] < ipv4 mtu = 1500
[04-13_07:04:46:569] ifconfig wwan0 up
[04-13_07:04:46:579] ifconfig wwan0.2 up
[04-13_07:04:46:592] ip -4 address flush dev wwan0.2
[04-13_07:04:46:602] ip -4 address add 10.129.37.205/30 dev wwan0.2
[04-13_07:04:46:613] ip -4 route add default via 10.129.37.206 dev wwan0.2
root@ZhuoTK:/# ifconfig wwan0.1
wwan0.1 Link encap:Ethernet HWaddr A2:58:DC:4D:DD:CA
inet addr:10.129.90.29 Bcast:0.0.0.0 Mask:255.255.255.252
inet6 addr: fe80::a058:dcff:fe4d:ddca/64 Scope:Link
UP BROADCAST RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:4 errors:0 dropped:0 overruns:0 frame:0
TX packets:13 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:304 (304.0 B) TX bytes:1170 (1.1 KiB)
root@ZhuoTK:/# ifconfig wwan0.2
wwan0.2 Link encap:Ethernet HWaddr A2:58:DC:4D:DD:CA
inet addr:10.129.37.205 Bcast:0.0.0.0 Mask:255.255.255.252
inet6 addr: fe80::a058:dcff:fe4d:ddca/64 Scope:Link
UP BROADCAST RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:720 (720.0 B)
root@ZhuoTK:/# ip ro del 8.8.8.8/32
RTNETLINK answers: No such process
root@ZhuoTK:/# ip ro add 8.8.8.8/32 dev wwan0.1
root@ZhuoTK:/# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: seq=0 ttl=52 time=98.584 ms
root@ZhuoTK:/# ip ro del 8.8.8.8/32
root@ZhuoTK:/# ip ro del 8.8.8.8/32
RTNETLINK answers: No such process
root@ZhuoTK:/# ip ro add 8.8.8.8/32 dev wwan0.2
root@ZhuoTK:/# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: seq=0 ttl=111 time=101.770 ms

View File

@ -0,0 +1,129 @@
# ./quectel-CM -s cmnet &
[04-21_17:35:14:362] Quectel_QConnectManager_Linux_V1.6.0.26
[04-21_17:35:14:363] Find /sys/bus/usb/devices/2-4 idVendor=0x2c7c idProduct=0x8101, bus=0x002, dev=0x016
[04-21_17:35:14:363] Auto find qmichannel = /dev/ttyUSB0
[04-21_17:35:14:363] Auto find usbnet_adapter = usb0
[04-21_17:35:14:363] netcard driver = cdc_ncm, driver version = 22-Aug-2005
[04-21_17:35:14:363] Modem works in ECM_RNDIS_NCM mode
[04-21_17:35:14:371] atc_fd = 7
[04-21_17:35:14:371] AT> ATE0Q0V1
[04-21_17:35:14:372] AT< RDATE0Q0V1
[04-21_17:35:14:372] AT< COMMAND NOT SUPPORT
[04-21_17:35:15:373] AT> AT+QCFG="usbnet"
[04-21_17:35:15:373] AT< +QCFG: "usbnet",5
[04-21_17:35:15:373] AT< OK
[04-21_17:35:15:373] AT> AT+QNETDEVCTL=?
[04-21_17:35:15:374] AT< +QNETDEVCTL: (1-11),(0,1),(0,1)
[04-21_17:35:15:374] AT< OK
[04-21_17:35:15:374] AT> AT+CGREG=2
[04-21_17:35:15:376] AT< OK
[04-21_17:35:15:376] AT> AT+CEREG=2
[04-21_17:35:15:381] AT< OK
[04-21_17:35:15:381] AT> AT+C5GREG=2
[04-21_17:35:15:384] AT< OK
[04-21_17:35:15:384] AT> AT+QNETDEVSTATUS=?
[04-21_17:35:15:385] AT< +QNETDEVSTATUS: (1-11)
[04-21_17:35:15:385] AT< OK
[04-21_17:35:15:385] AT> AT+QCFG="NAT"
[04-21_17:35:15:385] AT< +QCFG: "nat",0
[04-21_17:35:15:385] AT< OK
[04-21_17:35:15:385] AT> AT+CGMR
[04-21_17:35:15:386] AT< RG801HEAAAR03A01M8G
[04-21_17:35:15:386] AT< OK
[04-21_17:35:15:386] AT> AT+CPIN?
[04-21_17:35:15:388] AT< +CPIN: READY
[04-21_17:35:15:388] AT< OK
[04-21_17:35:15:389] AT> AT+QCCID
[04-21_17:35:15:393] AT< +QCCID: 89860015120716380461
[04-21_17:35:15:393] AT< OK
[04-21_17:35:15:393] requestGetICCID 89860015120716380461
[04-21_17:35:15:393] AT> AT+CIMI
[04-21_17:35:15:409] AT< 460028563800461
[04-21_17:35:15:409] AT< OK
[04-21_17:35:15:409] requestGetIMSI 460028563800461
[04-21_17:35:15:409] AT> AT+QICSGP=1
[04-21_17:35:15:411] AT< +QICSGP: 1,1,"cment","","",0,,0,
[04-21_17:35:15:411] AT< OK
[04-21_17:35:15:411] AT> AT+QICSGP=1
[04-21_17:35:15:415] AT< +QICSGP: 1,1,"cment","","",0,,0,
[04-21_17:35:15:415] AT< OK
[04-21_17:35:15:415] AT> AT+COPS=3,0;+COPS?;+COPS=3,1;+COPS?;+COPS=3,2;+COPS?
[04-21_17:35:15:421] AT< +COPS: 0,0,"CHINA MOBILE",12
[04-21_17:35:15:421] AT< +COPS: 0,1,"CMCC",12
[04-21_17:35:15:421] AT< +COPS: 0,2,"46000",12
[04-21_17:35:15:421] AT< OK
[04-21_17:35:15:421] AT> AT+C5GREG?
[04-21_17:35:15:424] AT< +C5GREG: 2,1,"46550B","0000000170C23000",11,1,"01"
[04-21_17:35:15:424] AT< OK
[04-21_17:35:15:424] AT> at+cops?
[04-21_17:35:15:427] AT< +COPS: 0,2,"46000",12
[04-21_17:35:15:427] AT< OK
[04-21_17:35:15:427] AT> at+qeng="servingcell"
[04-21_17:35:15:441] AT< +QENG: "servingcell","NOCONN","NR5G-SA","TDD",460,00,170C23000,901,46550B,504990,41,-,-54,-10,16,-,-
[04-21_17:35:15:441] AT< OK
[04-21_17:35:15:441] AT> AT+QNETDEVSTATUS=1
[04-21_17:35:15:445] AT< ERROR
[04-21_17:35:15:445] ifconfig usb0 0.0.0.0
[04-21_17:35:15:446] ifconfig usb0 down
[04-21_17:35:15:448] AT> AT+QNETDEVCTL=1,1,0
[04-21_17:35:15:454] AT< OK
[04-21_17:35:15:456] AT> AT+QNETDEVSTATUS=1
[04-21_17:35:15:458] AT< ERROR
[04-21_17:35:15:989] AT< +QNETDEVSTATUS:1,1,"IPV4"
[04-21_17:35:16:459] AT> AT+QNETDEVSTATUS=1
[04-21_17:35:16:461] AT< +QNETDEVSTATUS: 4F10190A,E0FFFFFF,4110190A,4110190A,02B48AD3,03B48AD3, 85600, 85600
[04-21_17:35:16:461] AT< OK
[04-21_17:35:16:461] AT> AT+QNETDEVSTATUS=1
[04-21_17:35:16:462] AT< +QNETDEVSTATUS: 4F10190A,E0FFFFFF,4110190A,4110190A,02B48AD3,03B48AD3, 85600, 85600
[04-21_17:35:16:462] AT< OK
[04-21_17:35:16:462] requestGetIPAddress 10.25.16.79
[04-21_17:35:16:462] AT> at+cops?
[04-21_17:35:16:463] AT< +COPS: 0,2,"46000",12
[04-21_17:35:16:463] AT< OK
[04-21_17:35:16:463] AT> at+qeng="servingcell"
[04-21_17:35:16:465] AT< +QENG: "servingcell","CONNECT","NR5G-SA","TDD",460,00,170C23000,901,46550B,504990,41,-,-52,-11,15,-,-
[04-21_17:35:16:465] AT< OK
[04-21_17:35:16:465] AT> AT+QNETDEVSTATUS=1
[04-21_17:35:16:466] AT< +QNETDEVSTATUS: 4F10190A,E0FFFFFF,4110190A,4110190A,02B48AD3,03B48AD3, 85600, 85600
[04-21_17:35:16:466] AT< OK
[04-21_17:35:16:466] ifconfig usb0 up
[04-21_17:35:16:470] busybox udhcpc -f -n -q -t 5 -i usb0
udhcpc: started, v1.30.1
udhcpc: sending discover
udhcpc: sending select for 10.25.16.79
udhcpc: lease of 10.25.16.79 obtained, lease time 518400
[04-21_17:35:16:602] /etc/udhcpc/default.script: Resetting default routes
SIOCDELRT: No such process
SIOCADDRT: Network is unreachable
[04-21_17:35:16:606] /etc/udhcpc/default.script: Adding DNS 211.138.180.2
[04-21_17:35:16:606] /etc/udhcpc/default.script: Adding DNS 211.138.180.3
[04-21_17:35:16:655] AT> at+cops?
[04-21_17:35:16:656] AT< +COPS: 0,2,"46000",12
[04-21_17:35:16:656] AT< OK
[04-21_17:35:16:656] AT> at+qeng="servingcell"
[04-21_17:35:16:657] AT< +QENG: "servingcell","CONNECT","NR5G-SA","TDD",460,00,170C23000,901,46550B,504990,41,-,-50,-11,17,-,-
[04-21_17:35:16:658] AT< OK
err = 16
[04-21_17:35:16:658] AT> AT+QNETDEVSTATUS=1
[04-21_17:35:16:659] AT< +QNETDEVSTATUS: 4F10190A,E0FFFFFF,4110190A,4110190A,02B48AD3,03B48AD3, 85600, 85600
[04-21_17:35:16:659] AT< OK
root@carl-ThinkPad-X1-Carbon-7th:/home/carl/q/quectel-CM# ifconfig usb0
usb0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.25.16.79 netmask 255.255.255.224 broadcast 10.25.16.95
inet6 fe80::5c98:e9d4:c82d:5f prefixlen 64 scopeid 0x20<link>
ether 0c:5b:8f:27:9a:64 txqueuelen 1000 (Ethernet)
RX packets 7 bytes 1656 (1.6 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 32 bytes 5112 (5.1 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
root@carl-ThinkPad-X1-Carbon-7th:/home/carl/q/quectel-CM# [04-21_17:35:31:670] AT> at+cops?
[04-21_17:35:31:671] AT< +COPS: 0,2,"46000",12
[04-21_17:35:31:671] AT< OK
[04-21_17:35:31:671] AT> at+qeng="servingcell"
[04-21_17:35:31:673] AT< +QENG: "servingcell","CONNECT","NR5G-SA","TDD",460,00,170C23000,901,46550B,504990,41,-,-48,-10,17,-,-
[04-21_17:35:31:673] AT< OK
[04-21_17:35:31:673] AT> AT+QNETDEVSTATUS=1
[04-21_17:35:31:674] AT< +QNETDEVSTATUS: 4F10190A,E0FFFFFF,4110190A,4110190A,02B48AD3,03B48AD3, 85600, 85600
[04-21_17:35:31:674] AT< OK

View File

@ -0,0 +1,62 @@
root@ZhuoTK:/# dmesg
[ 230.590000] GobiNet 1-1.3:1.4 usb0: register 'GobiNet' at usb-101c0000.ehci-1.3, GobiNet Ethernet Device, 02:50:f4:00:00:00
[ 230.600000] creating qcqmi0
root@ZhuoTK:/# quectel-CM -s cmnet &
[04-13_03:24:58:213] Quectel_QConnectManager_Linux_V1.6.0.25
[04-13_03:24:58:216] Find /sys/bus/usb/devices/1-1.3 idVendor=0x2c7c idProduct=0x125, bus=0x001, dev=0x004
[04-13_03:24:58:218] Auto find qmichannel = /dev/qcqmi0
[04-13_03:24:58:218] Auto find usbnet_adapter = usb0
[04-13_03:24:58:218] netcard driver = GobiNet, driver version = V1.6.2.13
[04-13_03:24:58:219] Modem works in QMI mode
[04-13_03:24:58:260] Get clientWDS = 7
[04-13_03:24:58:292] Get clientDMS = 8
[04-13_03:24:58:324] Get clientNAS = 9
[04-13_03:24:58:355] Get clientUIM = 10
[04-13_03:24:58:388] Get clientWDA = 11
[04-13_03:24:58:420] requestBaseBandVersion EC25EFAR06A11M4G
[04-13_03:24:58:548] requestGetSIMStatus SIMStatus: SIM_READY
[04-13_03:24:58:549] requestSetProfile[1] cmnet///0
[04-13_03:24:58:613] requestGetProfile[1] cmnet///0
[04-13_03:24:58:645] requestRegistrationState2 MCC: 460, MNC: 0, PS: Attached, DataCap: LTE
[04-13_03:24:58:677] requestQueryDataCall IPv4ConnectionStatus: DISCONNECTED
[04-13_03:24:58:677] ifconfig usb0 0.0.0.0
[04-13_03:24:58:696] ifconfig usb0 down
[04-13_03:24:59:028] requestSetupDataCall WdsConnectionIPv4Handle: 0x87245bd0
[04-13_03:24:59:189] ifconfig usb0 up
[04-13_03:24:59:214] you are use OpenWrt?
[04-13_03:24:59:215] should not calling udhcpc manually?
[04-13_03:24:59:215] should modify /etc/config/network as below?
[04-13_03:24:59:215] config interface wan
[04-13_03:24:59:215] option ifname usb0
[04-13_03:24:59:215] option proto dhcp
[04-13_03:24:59:215] should use "/sbin/ifstaus wan" to check usb0 's status?
[04-13_03:24:59:216] busybox udhcpc -f -n -q -t 5 -i usb0
[04-13_03:24:59:226] udhcpc (v1.23.2) started
[04-13_03:24:59:238] Sending discover...
[04-13_03:24:59:248] Sending select for 10.198.78.154...
[04-13_03:24:59:251] Lease of 10.198.78.154 obtained, lease time 7200
[04-13_03:24:59:257] udhcpc: ifconfig usb0 10.198.78.154 netmask 255.255.255.252 broadcast +
[04-13_03:24:59:266] udhcpc: setting default routers: 10.198.78.153
root@ZhuoTK:/# ifconfig usb0
usb0 Link encap:Ethernet HWaddr 02:50:F4:00:00:00
inet addr:10.198.78.154 Mask:255.255.255.252
inet6 addr: fe80::50:f4ff:fe00:0/64 Scope:Link
UP RUNNING NOARP MTU:1500 Metric:1
RX packets:6 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:916 (916.0 B) TX bytes:960 (960.0 B)
root@ZhuoTK:/# ip ro show
default via 10.198.78.153 dev usb0
10.198.78.152/30 dev usb0 proto kernel scope link src 10.198.78.154
192.168.1.0/24 dev br-lan proto kernel scope link src 192.168.1.251
root@ZhuoTK:/# killall quectel-CM
[04-13_03:25:38:779] requestDeactivateDefaultPDP WdsConnectionIPv4Handle
[04-13_03:25:39:061] ifconfig usb0 0.0.0.0
[04-13_03:25:39:072] ifconfig usb0 down
[04-13_03:25:39:284] GobiNetThread exit
[04-13_03:25:39:285] qmi_main exit

View File

@ -0,0 +1,60 @@
root@ZhuoTK:/# insmod GobiNet.ko
[ 80.460000] GobiNet: Quectel_Linux&Android_GobiNet_Driver_V1.6.2.13
[ 80.460000] usbcore: registered new interface driver GobiNet
[ 97.710000] usb 1-1.3: new high-speed USB device number 3 using ehci-platform
[ 97.930000] usb 1-1.3: GSM modem (1-port) converter now attached to ttyUSB103
[ 97.950000] GobiNet 1-1.3:1.4 usb0: register 'GobiNet' at usb-101c0000.ehci-1.3, GobiNet Ethernet Device, 02:50:f4:00:00:00
[ 97.960000] creating qcqmi0
root@ZhuoTK:/# brctl addbr br0
root@ZhuoTK:/# brctl addif br0 eth0.1
root@ZhuoTK:/# brctl addif br0 usb0
root@ZhuoTK:/# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.00ca019197b9 no eth0.1
usb0
root@ZhuoTK:/# quectel-CM -s cment -b &
[04-13_05:13:18:213] Quectel_QConnectManager_Linux_V1.6.0.25
[04-13_05:13:18:216] Find /sys/bus/usb/devices/1-1.3 idVendor=0x2c7c idProduct=0x125, bus=0x001, dev=0x003
[ 122.270000] net usb0: bridge_mode change to 0x1
[04-13_05:13:18:218] Auto find qmichannel = /dev/qcqmi0
[04-13_05:13:18:218] Auto find usbnet_adapter = usb0
[04-13_05:13:18:218] netcard driver = GobiNet, driver version = V1.6.2.13
[04-13_05:13:18:224] Modem works in QMI mode
[04-13_05:13:18:251] Get clientWDS = 7
[04-13_05:13:18:282] Get clientDMS = 8
[04-13_05:13:18:316] Get clientNAS = 9
[04-13_05:13:18:347] Get clientUIM = 10
[04-13_05:13:18:379] Get clientWDA = 11
[04-13_05:13:18:411] requestBaseBandVersion EC25EFAR06A11M4G
[04-13_05:13:18:539] requestGetSIMStatus SIMStatus: SIM_READY
[04-13_05:13:18:540] requestSetProfile[1] cment///0
[04-13_05:13:18:603] requestGetProfile[1] cment///0
[04-13_05:13:18:637] requestRegistrationState2 MCC: 460, MNC: 0, PS: Attached, DataCap: LTE
[04-13_05:13:18:666] requestQueryDataCall IPv4ConnectionStatus: DISCONNECTED
[04-13_05:13:18:667] ifconfig usb0 0.0.0.0
[04-13_05:13:18:687] ifconfig usb0 down
[04-13_05:13:19:083] requestSetupDataCall WdsConnectionIPv4Handle: 0x8724d220
[04-13_05:13:19:243] ifconfig usb0 up
[04-13_05:13:19:270] echo '0xa218480' > /sys/class/net/usb0/bridge_ipv4
root@ZhuoTK:/# ifconfig br0 up
[ 135.530000] usb0 PC Mac Address: 00:0e:c6:a6:6c:f1
[ 135.570000] usb0 PC Mac Address: 00:0e:c6:a6:6c:f1
[ 135.580000] usb0 PC Mac Address: 00:0e:c6:a6:6c:f1
[ 135.610000] usb0 sip = 10.33.132.128, tip=10.33.132.129, ipv4=10.33.132.128
[ 135.620000] usb0 sip = 10.33.132.128, tip=10.33.132.129, ipv4=10.33.132.128
[ 135.910000] usb0 sip = 0.0.0.0, tip=10.33.132.128, ipv4=10.33.132.128
[ 136.000000] usb0 sip = 10.33.132.128, tip=10.33.132.129, ipv4=10.33.132.128
[ 136.910000] usb0 sip = 0.0.0.0, tip=10.33.132.128, ipv4=10.33.132.128
[ 137.910000] usb0 sip = 0.0.0.0, tip=10.33.132.128, ipv4=10.33.132.128
[ 138.740000] usb0 sip = 10.33.132.128, tip=10.33.132.129, ipv4=10.33.132.128
[ 138.910000] usb0 sip = 10.33.132.128, tip=10.33.132.128, ipv4=10.33.132.128
[ 139.000000] usb0 sip = 10.33.132.128, tip=10.33.132.129, ipv4=10.33.132.128
[ 140.860000] usb0 sip = 10.33.132.128, tip=10.33.132.129, ipv4=10.33.132.128
[ 143.160000] br0: port 2(usb0) entered forwarding state
[ 143.160000] br0: port 1(eth0.1) entered forwarding state
[ 148.870000] usb0 sip = 10.33.132.128, tip=10.33.132.129, ipv4=10.33.132.128
[ 149.010000] usb0 sip = 10.33.132.128, tip=10.33.132.129, ipv4=10.33.132.128
[ 165.630000] usb0 sip = 10.33.132.128, tip=10.33.132.129, ipv4=10.33.132.128

View File

@ -0,0 +1,45 @@
root@ZhuoTK:/# insmod GobiNet.ko qmap_mode=1
[ 798.480000] GobiNet: Quectel_Linux&Android_GobiNet_Driver_V1.6.2.13
[ 798.490000] GobiNet 1-1.3:1.4 usb0: register 'GobiNet' at usb-101c0000.ehci-1.3, GobiNet Ethernet Device, 02:50:f4:00:00:00
[ 798.510000] creating qcqmi0
[ 798.510000] usbcore: registered new interface driver GobiNet
[ 799.620000] GobiNet::QMIWDASetDataFormat qmap settings qmap_version=5, rx_size=4096, tx_size=4096
[ 799.630000] GobiNet::QMIWDASetDataFormat qmap settings ul_data_aggregation_max_size=4096, ul_data_aggregation_max_datagrams=16
root@ZhuoTK:/# quectel-CM -s cmnet &
[04-13_03:32:31:248] Quectel_QConnectManager_Linux_V1.6.0.25
[04-13_03:32:31:251] Find /sys/bus/usb/devices/1-1.3 idVendor=0x2c7c idProduct=0x125, bus=0x001, dev=0x005
[04-13_03:32:31:253] Auto find qmichannel = /dev/qcqmi0
[04-13_03:32:31:253] Auto find usbnet_adapter = usb0
[04-13_03:32:31:253] netcard driver = GobiNet, driver version = V1.6.2.13
[04-13_03:32:31:253] qmap_mode = 1, qmap_version = 5, qmap_size = 4096, muxid = 0x81, qmap_netcard = usb0
[04-13_03:32:31:254] Modem works in QMI mode
[04-13_03:32:31:289] Get clientWDS = 7
[04-13_03:32:31:320] Get clientDMS = 8
[04-13_03:32:31:353] Get clientNAS = 9
[04-13_03:32:31:385] Get clientUIM = 10
[04-13_03:32:31:417] requestBaseBandVersion EC25EFAR06A11M4G
[04-13_03:32:31:545] requestGetSIMStatus SIMStatus: SIM_READY
[04-13_03:32:31:545] requestSetProfile[1] cmnet///0
[04-13_03:32:31:609] requestGetProfile[1] cmnet///0
[04-13_03:32:31:641] requestRegistrationState2 MCC: 460, MNC: 0, PS: Attached, DataCap: LTE
[04-13_03:32:31:673] requestQueryDataCall IPv4ConnectionStatus: DISCONNECTED
[04-13_03:32:31:674] ifconfig usb0 0.0.0.0
[04-13_03:32:31:698] ifconfig usb0 down
[04-13_03:32:31:770] requestSetupDataCall WdsConnectionIPv4Handle: 0x872481a0
[ 857.000000] net usb0: link_state 0x0 -> 0x1
[04-13_03:32:31:902] ifconfig usb0 up
[04-13_03:32:31:928] you are use OpenWrt?
[04-13_03:32:31:928] should not calling udhcpc manually?
[04-13_03:32:31:928] should modify /etc/config/network as below?
[04-13_03:32:31:928] config interface wan
[04-13_03:32:31:928] option ifname usb0
[04-13_03:32:31:929] option proto dhcp
[04-13_03:32:31:929] should use "/sbin/ifstaus wan" to check usb0 's status?
[04-13_03:32:31:929] busybox udhcpc -f -n -q -t 5 -i usb0
[04-13_03:32:31:939] udhcpc (v1.23.2) started
[04-13_03:32:31:951] Sending discover...
[04-13_03:32:31:956] Sending select for 10.199.102.71...
[04-13_03:32:31:959] Lease of 10.199.102.71 obtained, lease time 7200
[04-13_03:32:31:964] udhcpc: ifconfig usb0 10.199.102.71 netmask 255.255.255.240 broadcast +
[04-13_03:32:31:974] udhcpc: setting default routers: 10.199.102.72

View File

@ -0,0 +1,62 @@
root@ZhuoTK:/# insmod GobiNet.ko qmap_mode=1
[ 41.540000] GobiNet: Quectel_Linux&Android_GobiNet_Driver_V1.6.2.13
[ 41.550000] GobiNet 1-1.3:1.4 usb0: register 'GobiNet' at usb-101c0000.ehci-1.3, GobiNet Ethernet Device, 02:50:f4:00:00:00
[ 41.570000] creating qcqmi0
[ 41.570000] usbcore: registered new interface driver GobiNet
[ 42.700000] GobiNet::QMIWDASetDataFormat qmap settings qmap_version=5, rx_size=4096, tx_size=4096
[ 42.710000] GobiNet::QMIWDASetDataFormat qmap settings ul_data_aggregation_max_size=4096, ul_data_aggregation_max_datagrams=16
root@ZhuoTK:/# brctl addbr br0
root@ZhuoTK:/# brctl addif br0 eth0.1
root@ZhuoTK:/# brctl addif br0 usb0
root@ZhuoTK:/# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.00ca019197b9 no eth0.1
usb0
root@ZhuoTK:/# quectel-CM -s cmnet -b &
# [04-13_05:12:29:338] Quectel_QConnectManager_Linux_V1.6.0.25
[04-13_05:12:29:340] Find /sys/bus/usb/devices/1-1.3 idVendor=0x2c7c idProduct=0x125, bus=0x001, dev=0x003
[ 73.380000] net usb0: bridge_mode change to 0x1
[04-13_05:12:29:342] Auto find qmichannel = /dev/qcqmi0
[04-13_05:12:29:342] Auto find usbnet_adapter = usb0
[04-13_05:12:29:342] netcard driver = GobiNet, driver version = V1.6.2.13
[04-13_05:12:29:343] qmap_mode = 1, qmap_version = 5, qmap_size = 4096, muxid = 0x81, qmap_netcard = usb0
[04-13_05:12:29:348] Modem works in QMI mode
[04-13_05:12:29:382] Get clientWDS = 7
[04-13_05:12:29:414] Get clientDMS = 8
[04-13_05:12:29:447] Get clientNAS = 9
[04-13_05:12:29:479] Get clientUIM = 10
[04-13_05:12:29:512] requestBaseBandVersion EC25EFAR06A11M4G
[04-13_05:12:29:640] requestGetSIMStatus SIMStatus: SIM_READY
[04-13_05:12:29:640] requestSetProfile[1] cmnet///0
[04-13_05:12:29:704] requestGetProfile[1] cmnet///0
[04-13_05:12:29:735] requestRegistrationState2 MCC: 460, MNC: 0, PS: Attached, DataCap: LTE
[04-13_05:12:29:767] requestQueryDataCall IPv4ConnectionStatus: DISCONNECTED
[04-13_05:12:29:768] ifconfig usb0 0.0.0.0
[04-13_05:12:29:792] ifconfig usb0 down
[04-13_05:12:29:863] requestSetupDataCall WdsConnectionIPv4Handle: 0x8724d820
[ 74.030000] net usb0: link_state 0x0 -> 0x1
[04-13_05:12:29:996] ifconfig usb0 up
[04-13_05:12:30:022] echo '0xa16b769' > /sys/class/net/usb0/bridge_ipv4
root@ZhuoTK:/# ifconfig br0 up
[ 82.210000] br0: port 2(usb0) entered forwarding state
[ 82.210000] br0: port 2(usb0) entered forwarding state
[ 82.220000] br0: port 1(eth0.1) entered forwarding state
[ 82.220000] br0: port 1(eth0.1) entered forwarding state
[ 88.830000] rt305x-esw 10110000.esw: link changed 0x01
[ 89.010000] usb0 PC Mac Address: 00:0e:c6:a6:6c:f1
[ 89.040000] usb0 PC Mac Address: 00:0e:c6:a6:6c:f1
[ 89.050000] usb0 PC Mac Address: 00:0e:c6:a6:6c:f1
[ 89.120000] usb0 sip = 10.22.183.105, tip=10.22.183.106, ipv4=10.22.183.105
[ 89.350000] usb0 sip = 0.0.0.0, tip=10.22.183.105, ipv4=10.22.183.105
[ 89.400000] usb0 sip = 10.22.183.105, tip=10.22.183.106, ipv4=10.22.183.105
[ 89.520000] usb0 sip = 10.22.183.105, tip=10.22.183.106, ipv4=10.22.183.105
[ 90.350000] usb0 sip = 0.0.0.0, tip=10.22.183.105, ipv4=10.22.183.105
[ 91.350000] usb0 sip = 0.0.0.0, tip=10.22.183.105, ipv4=10.22.183.105
[ 92.350000] usb0 sip = 10.22.183.105, tip=10.22.183.105, ipv4=10.22.183.105
[ 92.430000] usb0 sip = 10.22.183.105, tip=10.22.183.106, ipv4=10.22.183.105
[ 92.660000] usb0 sip = 10.22.183.105, tip=10.22.183.106, ipv4=10.22.183.105
[ 97.240000] br0: port 2(usb0) entered forwarding state
[ 97.240000] br0: port 1(eth0.1) entered forwarding state

View File

@ -0,0 +1,146 @@
root@ZhuoTK:/# insmod GobiNet.ko qmap_mode=4
[ 970.380000] GobiNet: Quectel_Linux&Android_GobiNet_Driver_V1.6.2.13
[ 970.380000] usbcore: registered new interface driver GobiNet
[ 989.620000] usb 1-1.3: new high-speed USB device number 6 using ehci-platform
[ 989.860000] GobiNet 1-1.3:1.4 usb0: register 'GobiNet' at usb-101c0000.ehci-1.3, GobiNet Ethernet Device, 02:50:f4:00:00:00
[ 989.870000] creating qcqmi0
[ 989.880000] GobiNet::qmap_register_device usb0.1
[ 989.880000] GobiNet::qmap_register_device usb0.2
[ 989.890000] GobiNet::qmap_register_device usb0.3
[ 989.890000] GobiNet::qmap_register_device usb0.4
[ 994.820000] GobiNet::QMIWDASetDataFormat qmap settings qmap_version=5, rx_size=4096, tx_size=4096
[ 994.830000] GobiNet::QMIWDASetDataFormat qmap settings ul_data_aggregation_max_size=4096, ul_data_aggregation_max_datagrams=16
root@ZhuoTK:/# quectel-CM -n 1 -s cmnet &
[04-13_03:35:31:878] Quectel_QConnectManager_Linux_V1.6.0.25
[04-13_03:35:31:881] Find /sys/bus/usb/devices/1-1.3 idVendor=0x2c7c idProduct=0x125, bus=0x001, dev=0x006
[04-13_03:35:31:882] Auto find qmichannel = /dev/qcqmi0
[04-13_03:35:31:882] Auto find usbnet_adapter = usb0
[04-13_03:35:31:883] netcard driver = GobiNet, driver version = V1.6.2.13
[04-13_03:35:31:883] qmap_mode = 4, qmap_version = 5, qmap_size = 4096, muxid = 0x81, qmap_netcard = usb0.1
[04-13_03:35:31:883] Modem works in QMI mode
[04-13_03:35:31:896] Get clientWDS = 7
[04-13_03:35:31:927] Get clientDMS = 8
[04-13_03:35:31:959] Get clientNAS = 9
[04-13_03:35:31:992] Get clientUIM = 10
[04-13_03:35:32:024] requestBaseBandVersion EC25EFAR06A11M4G
[04-13_03:35:32:152] requestGetSIMStatus SIMStatus: SIM_READY
[04-13_03:35:32:152] requestSetProfile[1] cmnet///0
[04-13_03:35:32:216] requestGetProfile[1] cmnet///0
[04-13_03:35:32:248] requestRegistrationState2 MCC: 460, MNC: 0, PS: Attached, DataCap: LTE
[04-13_03:35:32:279] requestQueryDataCall IPv4ConnectionStatus: DISCONNECTED
[04-13_03:35:32:280] ifconfig usb0 down
[04-13_03:35:32:290] ifconfig usb0.1 0.0.0.0
[04-13_03:35:32:301] ifconfig usb0.1 down
[04-13_03:35:32:344] requestSetupDataCall WdsConnectionIPv4Handle: 0x8723eef0
[ 1037.570000] net usb0: link_state 0x0 -> 0x1
[04-13_03:35:32:477] ifconfig usb0 up
[04-13_03:35:32:496] ifconfig usb0.1 up
[04-13_03:35:32:508] you are use OpenWrt?
[04-13_03:35:32:509] should not calling udhcpc manually?
[04-13_03:35:32:509] should modify /etc/config/network as below?
[04-13_03:35:32:509] config interface wan
[04-13_03:35:32:509] option ifname usb0.1
[04-13_03:35:32:509] option proto dhcp
[04-13_03:35:32:509] should use "/sbin/ifstaus wan" to check usb0.1 's status?
[04-13_03:35:32:510] busybox udhcpc -f -n -q -t 5 -i usb0.1
[04-13_03:35:32:520] udhcpc (v1.23.2) started
[04-13_03:35:32:532] Sending discover...
[04-13_03:35:32:540] Sending select for 10.187.142.20...
[04-13_03:35:32:545] Lease of 10.187.142.20 obtained, lease time 7200
[04-13_03:35:32:550] udhcpc: ifconfig usb0.1 10.187.142.20 netmask 255.255.255.248 broadcast +
[04-13_03:35:32:560] udhcpc: setting default routers: 10.187.142.21
root@ZhuoTK:/# quectel-CM -n 2 -s 4gnet &
[04-13_03:35:38:766] Quectel_QConnectManager_Linux_V1.6.0.25
[04-13_03:35:38:769] Find /sys/bus/usb/devices/1-1.3 idVendor=0x2c7c idProduct=0x125, bus=0x001, dev=0x006
[04-13_03:35:38:770] Auto find qmichannel = /dev/qcqmi0
[04-13_03:35:38:770] Auto find usbnet_adapter = usb0
[04-13_03:35:38:771] netcard driver = GobiNet, driver version = V1.6.2.13
[04-13_03:35:38:771] qmap_mode = 4, qmap_version = 5, qmap_size = 4096, muxid = 0x82, qmap_netcard = usb0.2
[04-13_03:35:38:771] Modem works in QMI mode
[04-13_03:35:38:809] Get clientWDS = 7
[04-13_03:35:38:841] Get clientDMS = 8
[04-13_03:35:38:873] Get clientNAS = 9
[04-13_03:35:38:905] Get clientUIM = 10
[04-13_03:35:38:937] requestBaseBandVersion EC25EFAR06A11M4G
[04-13_03:35:39:065] requestGetSIMStatus SIMStatus: SIM_READY
[04-13_03:35:39:065] requestSetProfile[2] 4gnet///0
[04-13_03:35:39:129] requestGetProfile[2] 4gnet///0
[04-13_03:35:39:161] requestRegistrationState2 MCC: 460, MNC: 0, PS: Attached, DataCap: LTE
[04-13_03:35:39:193] requestQueryDataCall IPv4ConnectionStatus: DISCONNECTED
[04-13_03:35:39:193] ifconfig usb0.2 0.0.0.0
[04-13_03:35:39:206] ifconfig usb0.2 down
[04-13_03:35:39:417] requestSetupDataCall WdsConnectionIPv4Handle: 0x87252eb0
[ 1044.650000] net usb0: link_state 0x1 -> 0x3
[04-13_03:35:39:550] ifconfig usb0 up
[04-13_03:35:39:560] ifconfig usb0.2 up
[04-13_03:35:39:573] you are use OpenWrt?
[04-13_03:35:39:573] should not calling udhcpc manually?
[04-13_03:35:39:573] should modify /etc/config/network as below?
[04-13_03:35:39:573] config interface wan
[04-13_03:35:39:573] option ifname usb0.2
[04-13_03:35:39:573] option proto dhcp
[04-13_03:35:39:573] should use "/sbin/ifstaus wan" to check usb0.2 's status?
[04-13_03:35:39:574] busybox udhcpc -f -n -q -t 5 -i usb0.2
[04-13_03:35:39:585] udhcpc (v1.23.2) started
[04-13_03:35:39:597] Sending discover...
[04-13_03:35:39:601] Sending select for 10.197.125.183...
[04-13_03:35:39:606] Lease of 10.197.125.183 obtained, lease time 7200
[04-13_03:35:39:611] udhcpc: ifconfig usb0.2 10.197.125.183 netmask 255.255.255.240 broadcast +
[04-13_03:35:39:621] udhcpc: setting default routers: 10.197.125.184
root@ZhuoTK:/# ifconfig usb0.1
usb0.1 Link encap:Ethernet HWaddr 02:50:F4:00:00:00
inet addr:10.187.142.20 Mask:255.255.255.248
inet6 addr: fe80::50:f4ff:fe00:0/64 Scope:Link
UP RUNNING NOARP MTU:1500 Metric:1
RX packets:4 errors:0 dropped:0 overruns:0 frame:0
TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:764 (764.0 B) TX bytes:1824 (1.7 KiB)
root@ZhuoTK:/# ifconfig usb0.2
usb0.2 Link encap:Ethernet HWaddr 02:50:F4:00:00:00
inet addr:10.197.125.183 Mask:255.255.255.240
inet6 addr: fe80::50:f4ff:fe00:0/64 Scope:Link
UP RUNNING NOARP MTU:1500 Metric:1
RX packets:3 errors:0 dropped:0 overruns:0 frame:0
TX packets:9 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:688 (688.0 B) TX bytes:1224 (1.1 KiB)
root@ZhuoTK:/# ip ro add 8.8.8.8/32 dev usb0.1
root@ZhuoTK:/# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: seq=0 ttl=52 time=74.450 ms
root@ZhuoTK:/# ip ro del 8.8.8.8/32
root@ZhuoTK:/# ip ro del 8.8.8.8/32
RTNETLINK answers: No such process
root@ZhuoTK:/# ip ro add 8.8.8.8/32 dev usb0.2
root@ZhuoTK:/# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: seq=0 ttl=52 time=257.851 ms
root@ZhuoTK:/# quectel-CM -k 2
[04-13_03:39:16:986] Quectel_QConnectManager_Linux_V1.6.0.25
[04-13_03:39:16:988] /proc/2294/cmdline: quectel-CM -n 2 -s 4gnet
[04-13_03:39:16:988] send SIGINT to process 2294
[04-13_03:39:16:989] requestDeactivateDefaultPDP WdsConnectionIPv4Handle
[ 1262.310000] net usb0: link_state 0x3 -> 0x1
[04-13_03:39:17:216] ifconfig usb0.2 0.0.0.0
[04-13_03:39:17:228] ifconfig usb0.2 down
[04-13_03:39:17:370] GobiNetThread exit
[04-13_03:39:17:371] qmi_main exit
[2]+ Done quectel-CM -n 2 -s 4gnet
root@ZhuoTK:/# ifconfig usb0.2
usb0.2 Link encap:Ethernet HWaddr 02:50:F4:00:00:00
NOARP MTU:1500 Metric:1
RX packets:30 errors:0 dropped:0 overruns:0 frame:0
TX packets:35 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2816 (2.7 KiB) TX bytes:3408 (3.3 KiB)

View File

@ -0,0 +1,114 @@
root@ZhuoTK:/# insmod GobiNet.ko qmap_mode=4
[ 42.120000] GobiNet: Quectel_Linux&Android_GobiNet_Driver_V1.6.2.13
[ 42.130000] GobiNet 1-1.3:1.4 usb0: register 'GobiNet' at usb-101c0000.ehci-1.3, GobiNet Ethernet Device, 02:50:f4:00:00:00
[ 42.140000] creating qcqmi0
[ 42.150000] GobiNet::qmap_register_device usb0.1
[ 42.150000] GobiNet::qmap_register_device usb0.2
[ 42.160000] GobiNet::qmap_register_device usb0.3
[ 42.160000] GobiNet::qmap_register_device usb0.4
[ 42.170000] usbcore: registered new interface driver GobiNet
[ 43.270000] GobiNet::QMIWDASetDataFormat qmap settings qmap_version=5, rx_size=4096, tx_size=4096
[ 43.280000] GobiNet::QMIWDASetDataFormat qmap settings ul_data_aggregation_max_size=4096, ul_data_aggregation_max_datagrams=16
root@ZhuoTK:/# brctl addbr br0
root@ZhuoTK:/# brctl addif br0 eth0.1
root@ZhuoTK:/# brctl addif br0 usb0.1
root@ZhuoTK:/# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.00ca019197b9 no eth0.1
usb0.1
root@ZhuoTK:/# quectel-CM -n 1 -s cmnet -b &
[04-13_05:12:42:155] Quectel_QConnectManager_Linux_V1.6.0.25
[04-13_05:12:42:158] Find /sys/bus/usb/devices/1-1.3 idVendor=0x2c7c idProduct=0x125, bus=0x001, dev=0x003
[ 86.130000] net usb0.1: bridge_mode change to 0x1
[04-13_05:12:42:159] Auto find qmichannel = /dev/qcqmi0
[04-13_05:12:42:160] Auto find usbnet_adapter = usb0
[04-13_05:12:42:160] netcard driver = GobiNet, driver version = V1.6.2.13
[04-13_05:12:42:160] qmap_mode = 4, qmap_version = 5, qmap_size = 4096, muxid = 0x81, qmap_netcard = usb0.1
[04-13_05:12:42:166] Modem works in QMI mode
[04-13_05:12:42:181] Get clientWDS = 7
[04-13_05:12:42:213] Get clientDMS = 8
[04-13_05:12:42:246] Get clientNAS = 9
[04-13_05:12:42:278] Get clientUIM = 10
[04-13_05:12:42:310] requestBaseBandVersion EC25EFAR06A11M4G
[04-13_05:12:42:438] requestGetSIMStatus SIMStatus: SIM_READY
[04-13_05:12:42:439] requestSetProfile[1] cmnet///0
[04-13_05:12:42:502] requestGetProfile[1] cmnet///0
[04-13_05:12:42:534] requestRegistrationState2 MCC: 460, MNC: 0, PS: Attached, DataCap: LTE
[04-13_05:12:42:565] requestQueryDataCall IPv4ConnectionStatus: DISCONNECTED
[04-13_05:12:42:566] ifconfig usb0 down
[04-13_05:12:42:576] ifconfig usb0.1 0.0.0.0
[04-13_05:12:42:587] ifconfig usb0.1 down
[04-13_05:12:42:629] requestSetupDataCall WdsConnectionIPv4Handle: 0x8724d740
[ 86.730000] net usb0: link_state 0x0 -> 0x1
[04-13_05:12:42:762] ifconfig usb0 up
[04-13_05:12:42:782] ifconfig usb0.1 up
[04-13_05:12:42:794] echo '0xa16b769' > /sys/class/net/usb0.1/bridge_ipv4
root@ZhuoTK:/# ifconfig br0 up
[ 98.270000] usb0.1 PC Mac Address: 00:0e:c6:a6:6c:f1
[ 98.360000] usb0.1 sip = 0.0.0.0, tip=10.22.183.105, ipv4=10.22.183.105
[ 98.370000] usb0.1 sip = 10.22.183.105, tip=10.22.183.106, ipv4=10.22.183.105
[ 99.360000] usb0.1 sip = 0.0.0.0, tip=10.22.183.105, ipv4=10.22.183.105
[ 100.360000] usb0.1 sip = 0.0.0.0, tip=10.22.183.105, ipv4=10.22.183.105
[ 100.500000] usb0.1 sip = 10.22.183.105, tip=10.22.183.106, ipv4=10.22.183.105
root@ZhuoTK:/# quectel-CM -n 2 -s 4gnet &
[04-13_05:13:05:715] Quectel_QConnectManager_Linux_V1.6.0.25
[04-13_05:13:05:717] Find /sys/bus/usb/devices/1-1.3 idVendor=0x2c7c idProduct=0x125, bus=0x001, dev=0x003
[04-13_05:13:05:719] Auto find qmichannel = /dev/qcqmi0
[04-13_05:13:05:719] Auto find usbnet_adapter = usb0
[04-13_05:13:05:719] netcard driver = GobiNet, driver version = V1.6.2.13
[04-13_05:13:05:719] qmap_mode = 4, qmap_version = 5, qmap_size = 4096, muxid = 0x82, qmap_netcard = usb0.2
[04-13_05:13:05:720] Modem works in QMI mode
[04-13_05:13:05:734] Get clientWDS = 7
[04-13_05:13:05:766] Get clientDMS = 8
[04-13_05:13:05:798] Get clientNAS = 9
[04-13_05:13:05:830] Get clientUIM = 10
[04-13_05:13:05:861] requestBaseBandVersion EC25EFAR06A11M4G
[04-13_05:13:05:990] requestGetSIMStatus SIMStatus: SIM_READY
[04-13_05:13:05:991] requestSetProfile[2] 4gnet///0
[04-13_05:13:06:054] requestGetProfile[2] 4gnet///0
[04-13_05:13:06:086] requestRegistrationState2 MCC: 460, MNC: 0, PS: Attached, DataCap: LTE
[04-13_05:13:06:118] requestQueryDataCall IPv4ConnectionStatus: DISCONNECTED
[04-13_05:13:06:119] ifconfig usb0.2 0.0.0.0
[04-13_05:13:06:131] ifconfig usb0.2 down
[04-13_05:13:06:375] requestSetupDataCall WdsConnectionIPv4Handle: 0x872b8c50
[ 110.470000] net usb0: link_state 0x1 -> 0x3
[04-13_05:13:06:507] ifconfig usb0 up
[04-13_05:13:06:518] ifconfig usb0.2 up
[04-13_05:13:06:539] you are use OpenWrt?
[04-13_05:13:06:540] should not calling udhcpc manually?
[04-13_05:13:06:540] should modify /etc/config/network as below?
[04-13_05:13:06:540] config interface wan
[04-13_05:13:06:540] option ifname usb0.2
[04-13_05:13:06:540] option proto dhcp
[04-13_05:13:06:540] should use "/sbin/ifstaus wan" to check usb0.2 's status?
[04-13_05:13:06:540] busybox udhcpc -f -n -q -t 5 -i usb0.2
[04-13_05:13:06:554] udhcpc (v1.23.2) started
[04-13_05:13:06:614] Sending discover...
[04-13_05:13:06:619] Sending select for 10.22.58.141...
[04-13_05:13:06:623] Lease of 10.22.58.141 obtained, lease time 7200
[04-13_05:13:06:629] udhcpc: ifconfig usb0.2 10.22.58.141 netmask 255.255.255.252 broadcast +
[04-13_05:13:06:638] udhcpc: setting default routers: 10.22.58.142
root@ZhuoTK:/# ifconfig usb0.2
usb0.2 Link encap:Ethernet HWaddr 02:50:F4:00:00:00
inet addr:10.22.58.141 Mask:255.255.255.252
inet6 addr: fe80::50:f4ff:fe00:0/64 Scope:Link
UP RUNNING NOARP MTU:1500 Metric:1
RX packets:2 errors:0 dropped:0 overruns:0 frame:0
TX packets:7 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:612 (612.0 B) TX bytes:1064 (1.0 KiB)
root@ZhuoTK:/# ip ro show
default via 10.22.58.142 dev usb0.2
10.22.58.140/30 dev usb0.2 proto kernel scope link src 10.22.58.141
192.168.1.0/24 dev br-lan proto kernel scope link src 192.168.1.251
root@ZhuoTK:/# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: seq=0 ttl=52 time=69.822 ms

View File

@ -0,0 +1,80 @@
root@OpenWrt:/# lspci
00:00.0 Class 0604: 17cb:1001
01:00.0 Class ff00: 17cb:0306
root@OpenWrt:/# insmod pcie_mhi.ko mhi_mbim_enabled=1
[ 63.094154] mhi_init Quectel_Linux_PCIE_MHI_Driver_V1.3.0.17
[ 63.094739] mhi_pci_probe pci_dev->name = 0000:01:00.0, domain=0, bus=1, slot=0, vendor=17CB, device=0306
[ 63.099373] mhi_q 0000:01:00.0: BAR 0: assigned [mem 0x48000000-0x48000fff 64bit]
[ 63.108476] mhi_q 0000:01:00.0: enabling device (0140 -> 0142)
[ 63.293451] [I][mhi_netdev_enable_iface] Prepare the channels for transfer
[ 63.324757] [I][mhi_netdev_enable_iface] Exited.
[ 63.326265] rmnet_vnd_register_device(rmnet_mhi0.1)=0
root@OpenWrt:/# quectel-CM -s cment &
[04-13_09:25:23:910] Quectel_QConnectManager_Linux_V1.6.0.25
[04-13_09:25:23:912] network interface '' or qmidev '' is not exist
[04-13_09:25:23:912] netcard driver = pcie_mhi, driver version = V1.3.0.17
[04-13_09:25:23:913] mbim_qmap_mode = 1, vlan_id = 0x00, qmap_netcard = rmnet_mhi0.1
[04-13_09:25:23:913] Modem works in MBIM mode
[04-13_09:25:23:965] cdc_wdm_fd = 7
[04-13_09:25:23:965] mbim_open_device()
[04-13_09:25:24:549] mbim_device_caps_query()
[04-13_09:25:24:575] DeviceId: 869710030002905
[04-13_09:25:24:575] FirmwareInfo: RM500QGLABR10A03M4G_01.001.03
[04-13_09:25:24:575] HardwareInfo: RM500QGL_VH
[04-13_09:25:24:576] mbim_device_services_query()
[04-13_09:25:24:585] mbim_set_radio_state( 1 )
[04-13_09:25:24:588] HwRadioState: 1, SwRadioState: 1
[04-13_09:25:24:588] mbim_subscriber_status_query()
[04-13_09:25:24:612] SubscriberId: 460028563800461
[04-13_09:25:24:612] SimIccId: 89860015120716380461
[04-13_09:25:24:613] SubscriberReadyState NotInitialized -> Initialized
[04-13_09:25:24:613] mbim_register_state_query()
[04-13_09:25:24:617] RegisterState Unknown -> Home
[04-13_09:25:24:617] mbim_packet_service_query()
[04-13_09:25:24:619] PacketServiceState Unknown -> Attached
[04-13_09:25:24:619] CurrentDataClass = 5G_NSA
[04-13_09:25:24:620] mbim_query_connect(sessionID=0)
[04-13_09:25:24:631] ActivationState Unknown -> Deactivated
[04-13_09:25:24:631] ifconfig rmnet_mhi0 down
[04-13_09:25:24:657] ifconfig rmnet_mhi0.1 0.0.0.0
ifconfig: SIOCSIFFLAGS: Network is down
[04-13_09:25:24:681] ifconfig rmnet_mhi0.1 down
[04-13_09:25:24:705] mbim_register_state_query()
[04-13_09:25:24:709] mbim_packet_service_query()
[04-13_09:25:24:713] CurrentDataClass = 5G_NSA
[04-13_09:25:24:713] mbim_set_connect(onoff=1, sessionID=0)
[04-13_09:25:25:096] ActivationState Deactivated -> Activated
[04-13_09:25:25:097] mbim_ip_config(sessionID=0)
[04-13_09:25:25:100] < SessionId = 0
[04-13_09:25:25:100] < IPv4ConfigurationAvailable = 0xf
[04-13_09:25:25:100] < IPv6ConfigurationAvailable = 0x0
[04-13_09:25:25:101] < IPv4AddressCount = 0x1
[04-13_09:25:25:101] < IPv4AddressOffset = 0x3c
[04-13_09:25:25:101] < IPv6AddressCount = 0x0
[04-13_09:25:25:102] < IPv6AddressOffset = 0x0
[04-13_09:25:25:102] < IPv4 = 10.190.166.229/30
[04-13_09:25:25:103] < gw = 10.190.166.230
[04-13_09:25:25:103] < dns1 = 211.138.180.2
[04-13_09:25:25:103] < dns2 = 211.138.180.3
[04-13_09:25:25:104] < ipv4 mtu = 1500
[04-13_09:25:25:112] ifconfig rmnet_mhi0 up
[04-13_09:25:25:141] ifconfig rmnet_mhi0.1 up
[04-13_09:25:25:170] ip -4 address flush dev rmnet_mhi0.1
[04-13_09:25:25:190] ip -4 address add 10.190.166.229/30 dev rmnet_mhi0.1
[04-13_09:25:25:213] ip -4 route add default via 10.190.166.230 dev rmnet_mhi0.1
root@OpenWrt:/# ifconfig rmnet_mhi0.1
rmnet_mhi0.1 Link encap:Ethernet HWaddr 02:50:F4:00:00:00
inet addr:10.190.166.229 Mask:255.255.255.252
inet6 addr: fe80::50:f4ff:fe00:0/64 Scope:Link
UP RUNNING NOARP MTU:1500 Metric:1
RX packets:19 errors:0 dropped:0 overruns:0 frame:0
TX packets:29 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2326 (2.2 KiB) TX bytes:2991 (2.9 KiB)
root@OpenWrt:/# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: seq=0 ttl=52 time=278.561 ms

View File

@ -0,0 +1,170 @@
root@OpenWrt:/# lspci
00:00.0 Class 0604: 17cb:1001
01:00.0 Class ff00: 17cb:0304
root@OpenWrt:/# insmod pcie_mhi.ko mhi_mbim_enabled=1 qmap_mode=4
[ 76.596827] mhi_init Quectel_Linux_PCIE_MHI_Driver_V1.3.0.17
[ 76.598596] mhi_pci_probe pci_dev->name = 0000:01:00.0, domain=0, bus=1, slot=0, vendor=17CB, device=0304
[ 76.602863] mhi_q 0000:01:00.0: BAR 0: assigned [mem 0x48000000-0x48000fff 64bit]
[ 76.611323] mhi_q 0000:01:00.0: enabling device (0140 -> 0142)
[ 76.760239] [I][mhi_netdev_enable_iface] Prepare the channels for transfer
[ 76.828699] [I][mhi_netdev_enable_iface] Exited.
[ 76.832727] rmnet_vnd_register_device(rmnet_mhi0.1)=0
[ 76.836596] rmnet_vnd_register_device(rmnet_mhi0.2)=0
[ 76.841170] rmnet_vnd_register_device(rmnet_mhi0.3)=0
[ 76.846373] rmnet_vnd_register_device(rmnet_mhi0.4)=0
root@OpenWrt:~# quectel-mbim-proxy -d /dev/mhi_MBIM &
root@OpenWrt:~# [04-14_03:05:36:296] mbim_dev_fd=3
[04-14_03:05:36:297] mbim_send_open_msg()
[04-14_03:05:36:669] receive MBIM_OPEN_DONE, status=0
[04-14_03:05:36:670] mbim_server_fd=4
root@OpenWrt:~# quectel-CM -n 1 -s cmnet &
[04-14_03:05:45:955] Quectel_QConnectManager_Linux_V1.6.0.25
[04-14_03:05:45:956] network interface '' or qmidev '' is not exist
[04-14_03:05:45:957] netcard driver = pcie_mhi, driver version = V1.3.0.17
[04-14_03:05:45:957] mbim_qmap_mode = 4, vlan_id = 0x01, qmap_netcard = rmnet_mhi0.1
[04-14_03:05:45:958] Modem works in MBIM mode
[04-14_03:05:45:959] connect to quectel-mbim-proxy sockfd = 7
[04-14_03:05:45:959] handle_client_connect client_fd=5, client_idx=1
[04-14_03:05:45:959] cdc_wdm_fd = 7
[04-14_03:05:45:960] mbim_open_device()
[04-14_03:05:45:961] mbim_device_caps_query()
[04-14_03:05:45:967] DeviceId: 860459050041596
[04-14_03:05:45:968] FirmwareInfo: EM120RGLAPR02A03M4G_01.001.07
[04-14_03:05:45:968] HardwareInfo: EM120R_GL
[04-14_03:05:45:968] mbim_device_services_query()
[04-14_03:05:45:972] mbim_set_radio_state( 1 )
[04-14_03:05:45:976] HwRadioState: 1, SwRadioState: 1
[04-14_03:05:45:976] mbim_subscriber_status_query()
[04-14_03:05:45:985] SubscriberId: 460028563800461
[04-14_03:05:45:985] SimIccId: 89860015120716380461
[04-14_03:05:45:986] SubscriberReadyState NotInitialized -> Initialized
[04-14_03:05:45:986] mbim_register_state_query()
[04-14_03:05:45:991] RegisterState Unknown -> Home
[04-14_03:05:45:991] mbim_packet_service_query()
[04-14_03:05:45:995] PacketServiceState Unknown -> Attached
[04-14_03:05:45:996] mbim_query_connect(sessionID=1)
[04-14_03:05:46:000] ActivationState Unknown -> Deactivated
[04-14_03:05:46:000] ifconfig rmnet_mhi0 down
[04-14_03:05:46:024] ifconfig rmnet_mhi0.1 0.0.0.0
ifconfig: SIOCSIFFLAGS: Network is down
[04-14_03:05:46:049] ifconfig rmnet_mhi0.1 down
[04-14_03:05:46:072] mbim_set_connect(onoff=1, sessionID=1)
[04-14_03:05:46:099] ActivationState Deactivated -> Activated
[04-14_03:05:46:099] mbim_ip_config(sessionID=1)
[ 222.484298] net rmnet_mhi0: link_state 0x0 -> 0x1
[04-14_03:05:46:103] < SessionId = 1
[04-14_03:05:46:104] < IPv4ConfigurationAvailable = 0xf
[04-14_03:05:46:104] < IPv6ConfigurationAvailable = 0x0
[04-14_03:05:46:104] < IPv4AddressCount = 0x1
[04-14_03:05:46:105] < IPv4AddressOffset = 0x3c
[ 222.507775] [I][mhi_netdev_open] Opened net dev interface
[04-14_03:05:46:105] < IPv6AddressCount = 0x0
[04-14_03:05:46:105] < IPv6AddressOffset = 0x0
[04-14_03:05:46:106] < IPv4 = 10.38.21.158/30
[04-14_03:05:46:106] < gw = 10.38.21.157
[04-14_03:05:46:106] < dns1 = 211.138.180.2
[04-14_03:05:46:107] < dns2 = 211.138.180.3
[04-14_03:05:46:107] < ipv4 mtu = 1500
[04-14_03:05:46:112] ifconfig rmnet_mhi0 up
[04-14_03:05:46:140] ifconfig rmnet_mhi0.1 up
[04-14_03:05:46:168] ip -4 address flush dev rmnet_mhi0.1
[04-14_03:05:46:190] ip -4 address add 10.38.21.158/30 dev rmnet_mhi0.1
[04-14_03:05:46:212] ip -4 route add default via 10.38.21.157 dev rmnet_mhi0.1
[04-14_03:05:50:730] handle_client_connect client_fd=6, client_idx=2
[ 227.558631] net rmnet_mhi0: link_state 0x1 -> 0x3
root@OpenWrt:~# quectel-CM -n 2 -s 4gnet
[04-14_03:05:50:725] Quectel_QConnectManager_Linux_V1.6.0.25
[04-14_03:05:50:726] network interface '' or qmidev '' is not exist
[04-14_03:05:50:727] netcard driver = pcie_mhi, driver version = V1.3.0.17
[04-14_03:05:50:728] mbim_qmap_mode = 4, vlan_id = 0x02, qmap_netcard = rmnet_mhi0.2
[04-14_03:05:50:729] Modem works in MBIM mode
[04-14_03:05:50:730] connect to quectel-mbim-proxy sockfd = 8
[04-14_03:05:50:730] cdc_wdm_fd = 8
[04-14_03:05:50:731] mbim_open_device()
[04-14_03:05:50:732] mbim_device_caps_query()
[04-14_03:05:50:738] DeviceId: 860459050041596
[04-14_03:05:50:739] FirmwareInfo: EM120RGLAPR02A03M4G_01.001.07
[04-14_03:05:50:739] HardwareInfo: EM120R_GL
[04-14_03:05:50:740] mbim_device_services_query()
[04-14_03:05:50:744] mbim_set_radio_state( 1 )
[04-14_03:05:50:747] HwRadioState: 1, SwRadioState: 1
[04-14_03:05:50:747] mbim_subscriber_status_query()
[04-14_03:05:50:757] SubscriberId: 460028563800461
[04-14_03:05:50:758] SimIccId: 89860015120716380461
[04-14_03:05:50:758] SubscriberReadyState NotInitialized -> Initialized
[04-14_03:05:50:759] mbim_register_state_query()
[04-14_03:05:50:763] RegisterState Unknown -> Home
[04-14_03:05:50:764] mbim_packet_service_query()
[04-14_03:05:50:768] PacketServiceState Unknown -> Attached
[04-14_03:05:50:769] mbim_query_connect(sessionID=2)
[04-14_03:05:50:772] ActivationState Unknown -> Deactivated
[04-14_03:05:50:773] ifconfig rmnet_mhi0.2 0.0.0.0
[04-14_03:05:50:799] ifconfig rmnet_mhi0.2 down
[04-14_03:05:50:834] mbim_set_connect(onoff=1, sessionID=2)
[04-14_03:05:51:170] ActivationState Deactivated -> Activated
[04-14_03:05:51:171] mbim_ip_config(sessionID=2)
[04-14_03:05:51:174] < SessionId = 2
[04-14_03:05:51:174] < IPv4ConfigurationAvailable = 0xf
[04-14_03:05:51:175] < IPv6ConfigurationAvailable = 0x0
[04-14_03:05:51:175] < IPv4AddressCount = 0x1
[04-14_03:05:51:175] < IPv4AddressOffset = 0x3c
[04-14_03:05:51:176] < IPv6AddressCount = 0x0
[04-14_03:05:51:176] < IPv6AddressOffset = 0x0
[04-14_03:05:51:176] < IPv4 = 10.36.109.217/30
[04-14_03:05:51:177] < gw = 10.36.109.218
[04-14_03:05:51:177] < dns1 = 211.138.180.2
[04-14_03:05:51:178] < dns2 = 211.138.180.3
[04-14_03:05:51:178] < ipv4 mtu = 1500
[04-14_03:05:51:182] ifconfig rmnet_mhi0 up
[04-14_03:05:51:206] ifconfig rmnet_mhi0.2 up
[04-14_03:05:51:233] ip -4 address flush dev rmnet_mhi0.2
[04-14_03:05:51:254] ip -4 address add 10.36.109.217/30 dev rmnet_mhi0.2
[04-14_03:05:51:277] ip -4 route add default via 10.36.109.218 dev rmnet_mhi0.2
root@OpenWrt:~# ifconfig rmnet_mhi0.1
rmnet_mhi0.1 Link encap:Ethernet HWaddr 02:50:F4:00:00:00
inet addr:10.38.21.158 Mask:255.255.255.252
inet6 addr: fe80::50:f4ff:fe00:0/64 Scope:Link
UP RUNNING NOARP MTU:1500 Metric:1
RX packets:37 errors:0 dropped:0 overruns:0 frame:0
TX packets:29 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:9907 (9.6 KiB) TX bytes:2764 (2.6 KiB)
root@OpenWrt:~# ifconfig rmnet_mhi0.2
rmnet_mhi0.2 Link encap:Ethernet HWaddr 02:50:F4:00:00:00
inet addr:10.36.109.217 Mask:255.255.255.252
inet6 addr: fe80::50:f4ff:fe00:0/64 Scope:Link
UP RUNNING NOARP MTU:1500 Metric:1
RX packets:5 errors:0 dropped:0 overruns:0 frame:0
TX packets:18 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:344 (344.0 B) TX bytes:1152 (1.1 KiB)
root@OpenWrt:~# ip ro del 8.8.8.8/32
RTNETLINK answers: No such process
root@OpenWrt:~# ip ro add 8.8.8.8/32 dev rmnet_mhi0.1
root@OpenWrt:~# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: seq=0 ttl=52 time=73.248 ms
root@OpenWrt:~# ip ro del 8.8.8.8/32
root@OpenWrt:~# ip ro del 8.8.8.8/32
RTNETLINK answers: No such process
root@OpenWrt:~# ip ro add 8.8.8.8/32 dev rmnet_mhi0.2
root@OpenWrt:~# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: seq=0 ttl=52 time=99.637 ms
root@OpenWrt:~# quectel-CM -k 2
[04-14_03:06:58:912] Quectel_QConnectManager_Linux_V1.6.0.25
[04-14_03:06:59:063] /proc/3565/cmdline: quectel-CM -n 2 -s 4gnet
[04-14_03:06:59:064] send SIGINT to process 3565
[ 295.719442] net rmnet_mhi0: link_state 0x3 -> 0x1
[04-14_03:06:59:407] proxy_loop poll fd = 6, revents = 0011
[04-14_03:06:59:408] handle_client_disconnect client_fd=6, client_idx=2

View File

@ -0,0 +1,127 @@
root@OpenWrt:/# cat /sys/class/net/rmnet_mhi0/qmap_mode
1
root@OpenWrt:/# cat /sys/module/pcie_mhi/parameters/mhi_mbim_enabled
0
root@OpenWrt:/# dmesg | grep mhi
[ 18.442226] mhi_init Quectel_Linux_PCIE_MHI_Driver_V1.3.0.17
[ 18.443032] mhi_pci_probe pci_dev->name = 0000:01:00.0, domain=0, bus=1, slot=0, vendor=17CB, device=0306
[ 18.447488] mhi_q 0000:01:00.0: BAR 0: assigned [mem 0x48000000-0x48000fff 64bit]
[ 18.456563] mhi_q 0000:01:00.0: enabling device (0140 -> 0142)
[ 18.464184] [I][mhi_init_pci_dev] msi_required = 5, msi_allocated = 5, msi_irq = 197
[ 18.464215] [I][mhi_power_up] dev_state:RESET
[ 18.464225] [I][mhi_async_power_up] Requested to power on
[ 18.464432] [I][mhi_alloc_coherent] size = 114688, dma_handle = 8d400000
[ 18.464445] [I][mhi_init_dev_ctxt] mhi_ctxt->ctrl_seg = d1766000
[ 18.466003] [I][mhi_async_power_up] dev_state:RESET ee:AMSS
[ 18.466080] [I][mhi_pm_st_worker] Transition to state:READY
[ 18.466109] [I][mhi_pm_st_worker] INVALID_EE -> AMSS
[ 18.466135] [I][mhi_ready_state_transition] Waiting to enter READY state
[ 18.466224] [I][mhi_async_power_up] Power on setup success
[ 18.466265] [I][mhi_pci_probe] Return successful
[ 18.577299] [I][mhi_intvec_threaded_handlr] device ee:AMSS dev_state:READY, pm_state:POR
[ 18.577312] [I][mhi_ready_state_transition] Device in READY State
[ 18.577325] [I][mhi_intvec_threaded_handlr] device ee:AMSS dev_state:READY, INVALID_EE
[ 18.577329] [I][mhi_tryset_pm_state] Transition to pm state from:POR to:POR
[ 18.577337] [I][mhi_init_mmio] Initializing MMIO
[ 18.577344] [I][mhi_init_mmio] CHDBOFF:0x300
[ 18.577361] [I][mhi_init_mmio] ERDBOFF:0x700
[ 18.577372] [I][mhi_init_mmio] Programming all MMIO values.
[ 18.690834] [I][mhi_dump_tre] carl_ev evt_state_change mhistate=2
[ 18.690854] [I][mhi_process_ctrl_ev_ring] MHI state change event to state:M0
[ 18.690866] [I][mhi_pm_m0_transition] Entered With State:READY PM_STATE:POR
[ 18.690879] [I][mhi_tryset_pm_state] Transition to pm state from:POR to:M0
[ 18.694229] [I][mhi_dump_tre] carl_ev evt_ee_state execenv=2
[ 18.694241] [I][mhi_process_ctrl_ev_ring] MHI EE received event:AMSS
[ 18.694293] [I][mhi_pm_st_worker] Transition to state:MISSION MODE
[ 18.694310] [I][mhi_pm_st_worker] INVALID_EE -> AMSS
[ 18.694319] [I][mhi_pm_mission_mode_transition] Processing Mission Mode Transition
[ 18.694341] [I][mhi_init_timesync] No timesync capability found
[ 18.694350] [I][mhi_pm_mission_mode_transition] Adding new devices
[ 18.696365] [I][mhi_dtr_probe] Enter for DTR control channel
[ 18.696383] [I][__mhi_prepare_channel] Entered: preparing channel:18
[ 18.703113] [I][mhi_dump_tre] carl_ev evt_cmd_comp code=1, type=33
[ 18.703164] [I][__mhi_prepare_channel] Chan:18 successfully moved to start state
[ 18.703174] [I][__mhi_prepare_channel] Entered: preparing channel:19
[ 18.710681] [I][mhi_dump_tre] carl_ev evt_cmd_comp code=1, type=33
[ 18.710734] [I][__mhi_prepare_channel] Chan:19 successfully moved to start state
[ 18.710804] [I][mhi_dtr_probe] Exit with ret:0
[ 18.711774] [I][mhi_netdev_enable_iface] Prepare the channels for transfer
[ 18.711811] [I][__mhi_prepare_channel] Entered: preparing channel:100
[ 18.732097] [I][mhi_dump_tre] carl_ev evt_cmd_comp code=1, type=33
[ 18.732151] [I][__mhi_prepare_channel] Chan:100 successfully moved to start state
[ 18.732162] [I][__mhi_prepare_channel] Entered: preparing channel:101
[ 18.744170] [I][mhi_dump_tre] carl_ev evt_cmd_comp code=1, type=33
[ 18.744219] [I][__mhi_prepare_channel] Chan:101 successfully moved to start state
[ 18.749132] [I][mhi_netdev_enable_iface] Exited.
[ 18.750306] rmnet_vnd_register_device(rmnet_mhi0.1)=0
[ 18.752927] [I][mhi_pm_mission_mode_transition] Exit with ret:0
root@OpenWrt:/# busybox microcom /dev/mhi_DUN
at+cpin?
+CPIN: READY
OK
at+cops?
+COPS: 0,0,"CHINA MOBILE",13
OK
at+csq
+csq: 23,99
OK
root@OpenWrt:/# quectel-CM -s cmnet &
[04-13_09:26:58:077] Quectel_QConnectManager_Linux_V1.6.0.25
[04-13_09:26:58:078] network interface '' or qmidev '' is not exist
[04-13_09:26:58:079] netcard driver = pcie_mhi, driver version = V1.3.0.17
[04-13_09:26:58:080] qmap_mode = 1, qmap_version = 9, qmap_size = 16384, muxid = 0x81, qmap_netcard = rmnet_mhi0.1
[04-13_09:26:58:080] Modem works in QMI mode
[04-13_09:26:58:131] cdc_wdm_fd = 7
[04-13_09:26:59:132] QmiWwanInit message timeout
[04-13_09:27:00:140] Get clientWDS = 15
[04-13_09:27:00:144] Get clientDMS = 1
[04-13_09:27:00:147] Get clientNAS = 4
[04-13_09:27:00:151] Get clientUIM = 1
[04-13_09:27:00:155] Get clientWDA = 1
[04-13_09:27:00:158] requestBaseBandVersion RM500QGLABR10A03M4G
[04-13_09:27:00:161] qmap_settings.rx_urb_size = 16384
[04-13_09:27:00:162] qmap_settings.ul_data_aggregation_max_datagrams = 11
[04-13_09:27:00:162] qmap_settings.ul_data_aggregation_max_size = 8192
[04-13_09:27:00:163] qmap_settings.dl_minimum_padding = 0
[04-13_09:27:00:176] requestGetSIMStatus SIMStatus: SIM_READY
[04-13_09:27:00:177] requestSetProfile[1] cmnet///0
[04-13_09:27:00:190] requestGetProfile[1] cmnet///0
[04-13_09:27:00:193] requestRegistrationState2 MCC: 460, MNC: 0, PS: Attached, DataCap: 5G_NSA
[04-13_09:27:00:197] requestQueryDataCall IPv4ConnectionStatus: DISCONNECTED
[04-13_09:27:00:198] ifconfig rmnet_mhi0 down
[04-13_09:27:00:222] ifconfig rmnet_mhi0.1 0.0.0.0
[04-13_09:27:00:247] ifconfig rmnet_mhi0.1 down
[04-13_09:27:00:281] requestSetupDataCall WdsConnectionIPv4Handle: 0x1228bb20
[ 245.284909] net rmnet_mhi0: link_state 0x0 -> 0x1
[04-13_09:27:00:293] ifconfig rmnet_mhi0 up
[ 245.308696] [I][mhi_netdev_open] Opened net dev interface
[04-13_09:27:00:318] ifconfig rmnet_mhi0.1 up
[04-13_09:27:00:353] you are use OpenWrt?
[04-13_09:27:00:354] should not calling udhcpc manually?
[04-13_09:27:00:354] should modify /etc/config/network as below?
[04-13_09:27:00:355] config interface wan
[04-13_09:27:00:355] option ifname rmnet_mhi0.1
[04-13_09:27:00:355] option proto dhcp
[04-13_09:27:00:356] should use "/sbin/ifstaus wan" to check rmnet_mhi0.1 's status?
[04-13_09:27:00:356] busybox udhcpc -f -n -q -t 5 -i rmnet_mhi0.1
udhcpc: started, v1.28.3
udhcpc: sending discover
udhcpc: sending select for 10.128.73.23
udhcpc: lease of 10.128.73.23 obtained, lease time 7200
[04-13_09:27:00:710] udhcpc: ifconfig rmnet_mhi0.1 10.128.73.23 netmask 255.255.255.240 broadcast +
[04-13_09:27:00:742] udhcpc: setting default routers: 10.128.73.24
root@OpenWrt:/# ifconfig rmnet_mhi0.1
rmnet_mhi0.1 Link encap:Ethernet HWaddr 02:50:F4:00:00:00
inet addr:10.128.73.23 Mask:255.255.255.240
inet6 addr: fe80::50:f4ff:fe00:0/64 Scope:Link
UP RUNNING NOARP MTU:1500 Metric:1
RX packets:2 errors:0 dropped:0 overruns:0 frame:0
TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:612 (612.0 B) TX bytes:684 (684.0 B)

View File

@ -0,0 +1,76 @@
root@OpenWrt:/# lspci
00:00.0 Class 0604: 17cb:1001
01:00.0 Class ff00: 17cb:0306
root@OpenWrt:~# insmod pcie_mhi.ko
[ 77.949271] mhi_init Quectel_Linux_PCIE_MHI_Driver_V1.3.0.17
[ 77.950949] mhi_pci_probe pci_dev->name = 0000:01:00.0, domain=0, bus=1, slot=0, vendor=17CB, device=0306
[ 77.955331] mhi_q 0000:01:00.0: BAR 0: assigned [mem 0x48000000-0x48000fff 64bit]
[ 77.963756] mhi_q 0000:01:00.0: enabling device (0140 -> 0142)
[ 78.048911] [I][mhi_netdev_enable_iface] Prepare the channels for transfer
[ 78.092304] [I][mhi_netdev_enable_iface] Exited.
[ 78.096580] rmnet_vnd_register_device(rmnet_mhi0.1)=0
root@OpenWrt:~# brctl addbr br0
root@OpenWrt:~# brctl addif br0 rmnet_mhi0.1
root@OpenWrt:~# brctl addif br0 eth1
[ 250.017213] device eth1 entered promiscuous mode
root@OpenWrt:~# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.00001c353487 no eth1
rmnet_mhi0.1
root@OpenWrt:~# quectel-CM -s cmnet -b &
[04-14_06:43:28:473] Quectel_QConnectManager_Linux_V1.6.0.25
[04-14_06:43:28:474] network interface '' or qmidev '' is not exist
[04-14_06:43:28:475] netcard driver = pcie_mhi, driver version = V1.3.0.17
[04-14_06:43:28:476] qmap_mode = 1, qmap_version = 9, qmap_size = 16384, muxid = 0x81, qmap_netcard = rmnet_mhi0.1
[04-14_06:43:28:477] Modem works in QMI mode
[04-14_06:43:28:531] cdc_wdm_fd = 7
[04-14_06:43:29:532] QmiWwanInit message timeout
[04-14_06:43:30:540] Get clientWDS = 15
[04-14_06:43:30:543] Get clientDMS = 1
[04-14_06:43:30:546] Get clientNAS = 4
[04-14_06:43:30:550] Get clientUIM = 1
[04-14_06:43:30:553] Get clientWDA = 1
[04-14_06:43:30:557] requestBaseBandVersion RM500QGLABR10A03M4G
[04-14_06:43:30:560] qmap_settings.rx_urb_size = 16384
[04-14_06:43:30:561] qmap_settings.ul_data_aggregation_max_datagrams = 11
[04-14_06:43:30:561] qmap_settings.ul_data_aggregation_max_size = 8192
[04-14_06:43:30:561] qmap_settings.dl_minimum_padding = 0
[04-14_06:43:30:575] requestGetSIMStatus SIMStatus: SIM_READY
[04-14_06:43:30:575] requestSetProfile[1] cmnet///0
[04-14_06:43:30:588] requestGetProfile[1] cmnet///0
[04-14_06:43:30:591] requestRegistrationState2 MCC: 460, MNC: 0, PS: Attached, DataCap: 5G_NSA
[04-14_06:43:30:595] requestQueryDataCall IPv4ConnectionStatus: DISCONNECTED
[04-14_06:43:30:595] ifconfig rmnet_mhi0 down
[04-14_06:43:30:620] ifconfig rmnet_mhi0.1 0.0.0.0
ifconfig: SIOCSIFFLAGS: Network is down
[04-14_06:43:30:644] ifconfig rmnet_mhi0.1 down
[04-14_06:43:30:679] requestSetupDataCall WdsConnectionIPv4Handle: 0xb41f47d0
[ 263.869899] net rmnet_mhi0: link_state 0x0 -> 0x1
[04-14_06:43:30:693] ifconfig rmnet_mhi0 up
[ 263.892647] [I][mhi_netdev_open] Opened net dev interface
[04-14_06:43:30:718] ifconfig rmnet_mhi0.1 up
[04-14_06:43:30:746] echo '0xa59316b' > /sys/class/net/rmnet_mhi0.1/bridge_ipv4
root@OpenWrt:~# ifconfig br0 up
[ 268.800026] br0: port 2(eth1) entered forwarding state
[ 268.800336] br0: port 2(eth1) entered forwarding state
[ 268.804251] br0: port 1(rmnet_mhi0.1) entered forwarding state
[ 268.809465] br0: port 1(rmnet_mhi0.1) entered forwarding state
[ 283.845790] br0: port 2(eth1) entered forwarding state
[ 296.512489] rmnet_mhi0.1 PC Mac Address: 00:0e:c6:a6:6c:f1
[ 296.515756] rmnet_mhi0.1 PC Mac Address: 00:0e:c6:a6:6c:f1
[ 296.586584] rmnet_mhi0.1 sip = 10.89.49.107, tip=10.89.49.108, ipv4=10.89.49.107
[ 296.672356] rmnet_mhi0.1 sip = 10.89.49.107, tip=10.89.49.108, ipv4=10.89.49.107
[ 296.792061] rmnet_mhi0.1 sip = 10.89.49.107, tip=10.89.49.108, ipv4=10.89.49.107
[ 296.832822] rmnet_mhi0.1 sip = 10.89.49.107, tip=10.89.49.108, ipv4=10.89.49.107
[ 296.941073] rmnet_mhi0.1 sip = 0.0.0.0, tip=10.89.49.107, ipv4=10.89.49.107
[ 297.941310] rmnet_mhi0.1 sip = 0.0.0.0, tip=10.89.49.107, ipv4=10.89.49.107
[ 298.941528] rmnet_mhi0.1 sip = 0.0.0.0, tip=10.89.49.107, ipv4=10.89.49.107
[ 299.941704] rmnet_mhi0.1 sip = 10.89.49.107, tip=10.89.49.107, ipv4=10.89.49.107
[ 300.024484] rmnet_mhi0.1 sip = 10.89.49.107, tip=10.89.49.108, ipv4=10.89.49.107
[ 300.051995] rmnet_mhi0.1 sip = 10.89.49.107, tip=10.89.49.108, ipv4=10.89.49.107
[ 303.915933] rmnet_mhi0.1 sip = 10.89.49.107, tip=10.89.49.108, ipv4=10.89.49.107

View File

@ -0,0 +1,138 @@
root@OpenWrt:/# lspci
00:00.0 Class 0604: 17cb:1001
01:00.0 Class ff00: 17cb:0306
root@OpenWrt:/# insmod pcie_mhi.ko qmap_mode=4
[ 61.988878] mhi_init Quectel_Linux_PCIE_MHI_Driver_V1.3.0.17
[ 61.989484] mhi_pci_probe pci_dev->name = 0000:01:00.0, domain=0, bus=1, slot=0, vendor=17CB, device=0306
[ 61.994039] mhi_q 0000:01:00.0: BAR 0: assigned [mem 0x48000000-0x48000fff 64bit]
[ 62.003208] mhi_q 0000:01:00.0: enabling device (0140 -> 0142)
[ 62.191947] [I][mhi_netdev_enable_iface] Prepare the channels for transfer
[ 62.224065] [I][mhi_netdev_enable_iface] Exited.
[ 62.225619] rmnet_vnd_register_device(rmnet_mhi0.1)=0
[ 62.229289] rmnet_vnd_register_device(rmnet_mhi0.2)=0
[ 62.234378] rmnet_vnd_register_device(rmnet_mhi0.3)=0
[ 62.240039] rmnet_vnd_register_device(rmnet_mhi0.4)=0
root@OpenWrt:/# quectel-qmi-proxy -d /dev/mhi_QMI0 &
[04-13_09:25:12:278] Will use cdc-wdm='/dev/mhi_QMI0', proxy='quectel-qmi-proxy0'
[04-13_09:25:12:297] qmi_proxy_init enter
[04-13_09:25:12:297] qmi_proxy_loop enter thread_id 0xb6e88d44
[04-13_09:25:14:298] qmi_proxy_init succful
[04-13_09:25:14:299] local server: quectel-qmi-proxy0 sockfd = 4
[04-13_09:25:14:299] qmi_proxy_server_fd = 4
root@OpenWrt:/# quectel-CM -n 1 -s cmnet &
[04-13_09:25:32:336] Quectel_QConnectManager_Linux_V1.6.0.25
[04-13_09:25:32:337] network interface '' or qmidev '' is not exist
[04-13_09:25:32:338] netcard driver = pcie_mhi, driver version = V1.3.0.17
[04-13_09:25:32:339] qmap_mode = 4, qmap_version = 9, qmap_size = 16384, muxid = 0x81, qmap_netcard = rmnet_mhi0.1
[04-13_09:25:32:340] Modem works in QMI mode
[04-13_09:25:32:341] connect to quectel-qmi-proxy0 sockfd = 7
[04-13_09:25:32:342] cdc_wdm_fd = 7
[04-13_09:25:32:380] requestBaseBandVersion RM500QGLABR10A03M4G
[04-13_09:25:32:382] qmap_settings.rx_urb_size = 16384
[04-13_09:25:32:383] qmap_settings.ul_data_aggregation_max_datagrams = 11
[04-13_09:25:32:383] qmap_settings.ul_data_aggregation_max_size = 8192
[04-13_09:25:32:384] qmap_settings.dl_minimum_padding = 0
[04-13_09:25:32:394] requestGetSIMStatus SIMStatus: SIM_READY
[04-13_09:25:32:395] requestSetProfile[1] cmnet///0
[04-13_09:25:32:409] requestGetProfile[1] cmnet///0
[04-13_09:25:32:414] requestRegistrationState2 MCC: 460, MNC: 0, PS: Attached, DataCap: 5G_NSA
[04-13_09:25:32:418] requestQueryDataCall IPv4ConnectionStatus: DISCONNECTED
[04-13_09:25:32:419] ifconfig rmnet_mhi0 down
[04-13_09:25:32:448] ifconfig rmnet_mhi0.1 0.0.0.0
[04-13_09:25:32:473] ifconfig rmnet_mhi0.1 down
[04-13_09:25:32:514] requestSetupDataCall WdsConnectionIPv4Handle: 0x2313a2a0
[ 121.648172] net rmnet_mhi0: link_state 0x0 -> 0x1
[04-13_09:25:32:525] ifconfig rmnet_mhi0 up
[ 121.671210] [I][mhi_netdev_open] Opened net dev interface
[04-13_09:25:32:551] ifconfig rmnet_mhi0.1 up
[04-13_09:25:32:586] you are use OpenWrt?
[04-13_09:25:32:587] should not calling udhcpc manually?
[04-13_09:25:32:587] should modify /etc/config/network as below?
[04-13_09:25:32:587] config interface wan
[04-13_09:25:32:588] option ifname rmnet_mhi0.1
[04-13_09:25:32:588] option proto dhcp
[04-13_09:25:32:589] should use "/sbin/ifstaus wan" to check rmnet_mhi0.1 's status?
[04-13_09:25:32:589] busybox udhcpc -f -n -q -t 5 -i rmnet_mhi0.1
udhcpc: started, v1.28.3
udhcpc: sending discover
udhcpc: sending select for 10.174.91.70
udhcpc: lease of 10.174.91.70 obtained, lease time 7200
[04-13_09:25:32:980] udhcpc: ifconfig rmnet_mhi0.1 10.174.91.70 netmask 255.255.255.252 broadcast +
[04-13_09:25:33:007] udhcpc: setting default routers: 10.174.91.69
root@OpenWrt:/# quectel-CM -n 2 -s 4gnet &
[04-13_09:25:42:976] Quectel_QConnectManager_Linux_V1.6.0.25
[04-13_09:25:42:977] network interface '' or qmidev '' is not exist
[04-13_09:25:42:978] netcard driver = pcie_mhi, driver version = V1.3.0.17
[04-13_09:25:42:978] qmap_mode = 4, qmap_version = 9, qmap_size = 16384, muxid = 0x82, qmap_netcard = rmnet_mhi0.2
[04-13_09:25:42:979] Modem works in QMI mode
[04-13_09:25:42:981] connect to quectel-qmi-proxy0 sockfd = 7
[04-13_09:25:42:982] cdc_wdm_fd = 7
[04-13_09:25:43:010] requestBaseBandVersion RM500QGLABR10A03M4G
[04-13_09:25:43:013] qmap_settings.rx_urb_size = 16384
[04-13_09:25:43:014] qmap_settings.ul_data_aggregation_max_datagrams = 11
[04-13_09:25:43:014] qmap_settings.ul_data_aggregation_max_size = 8192
[04-13_09:25:43:015] qmap_settings.dl_minimum_padding = 0
[04-13_09:25:43:030] requestGetSIMStatus SIMStatus: SIM_READY
[04-13_09:25:43:030] requestSetProfile[2] 4gnet///0
[04-13_09:25:43:046] requestGetProfile[2] 4gnet///0
[04-13_09:25:43:050] requestRegistrationState2 MCC: 460, MNC: 0, PS: Attached, DataCap: 5G_NSA
[04-13_09:25:43:054] requestQueryDataCall IPv4ConnectionStatus: DISCONNECTED
[04-13_09:25:43:055] ifconfig rmnet_mhi0.2 0.0.0.0
[04-13_09:25:43:082] ifconfig rmnet_mhi0.2 down
[04-13_09:25:43:507] requestSetupDataCall WdsConnectionIPv4Handle: 0x2332a780
[ 132.641313] net rmnet_mhi0: link_state 0x1 -> 0x3
[04-13_09:25:43:519] ifconfig rmnet_mhi0 up
[04-13_09:25:43:543] ifconfig rmnet_mhi0.2 up
[04-13_09:25:43:570] you are use OpenWrt?
[04-13_09:25:43:570] should not calling udhcpc manually?
[04-13_09:25:43:571] should modify /etc/config/network as below?
[04-13_09:25:43:571] config interface wan
[04-13_09:25:43:571] option ifname rmnet_mhi0.2
[04-13_09:25:43:572] option proto dhcp
[04-13_09:25:43:572] should use "/sbin/ifstaus wan" to check rmnet_mhi0.2 's status?
[04-13_09:25:43:573] busybox udhcpc -f -n -q -t 5 -i rmnet_mhi0.2
udhcpc: started, v1.28.3
udhcpc: sending discover
udhcpc: sending select for 10.163.253.197
udhcpc: lease of 10.163.253.197 obtained, lease time 7200
[04-13_09:25:43:810] udhcpc: ifconfig rmnet_mhi0.2 10.163.253.197 netmask 255.255.255.252 broadcast +
[04-13_09:25:43:836] udhcpc: setting default routers: 10.163.253.198
root@OpenWrt:/# ifconfig rmnet_mhi0.1
rmnet_mhi0.1 Link encap:Ethernet HWaddr 02:50:F4:00:00:00
inet addr:10.174.91.70 Mask:255.255.255.252
inet6 addr: fe80::50:f4ff:fe00:0/64 Scope:Link
UP RUNNING NOARP MTU:1500 Metric:1
RX packets:2 errors:0 dropped:0 overruns:0 frame:0
TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:612 (612.0 B) TX bytes:1380 (1.3 KiB)
root@OpenWrt:/# ifconfig rmnet_mhi0.2
rmnet_mhi0.2 Link encap:Ethernet HWaddr 02:50:F4:00:00:00
inet addr:10.163.253.197 Mask:255.255.255.252
inet6 addr: fe80::50:f4ff:fe00:0/64 Scope:Link
UP RUNNING NOARP MTU:1500 Metric:1
RX packets:2 errors:0 dropped:0 overruns:0 frame:0
TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:612 (612.0 B) TX bytes:684 (684.0 B)
root@OpenWrt:/# ip ro del 8.8.8.8/32
RTNETLINK answers: No such process
root@OpenWrt:/# ip ro add 8.8.8.8/32 dev rmnet_mhi0.1
root@OpenWrt:/# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: seq=0 ttl=52 time=390.869 ms
root@OpenWrt:/# ip ro del 8.8.8.8/32
root@OpenWrt:/# ip ro del 8.8.8.8/32
RTNETLINK answers: No such process
root@OpenWrt:/# ip ro add 8.8.8.8/32 dev rmnet_mhi0.2
root@OpenWrt:/# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: seq=0 ttl=111 time=314.395 ms

View File

@ -0,0 +1,147 @@
root@OpenWrt:~# lspci
00:00.0 Class 0604: 17cb:1001
01:00.0 Class ff00: 17cb:0306
root@OpenWrt:~#
root@OpenWrt:~# insmod pcie_mhi.ko qmap_mode=4
[ 200.906104] mhi_init Quectel_Linux_PCIE_MHI_Driver_V1.3.0.17
[ 200.907913] mhi_pci_probe pci_dev->name = 0000:01:00.0, domain=0, bus=1, slot=0, vendor=17CB, device=0306
[ 200.912164] mhi_q 0000:01:00.0: BAR 0: assigned [mem 0x48000000-0x48000fff 64bit]
[ 200.920593] mhi_q 0000:01:00.0: enabling device (0140 -> 0142)
root@OpenWrt:~# [ 201.112214] [I][mhi_netdev_enable_iface] Prepare the channels for transfer
[ 201.154640] [I][mhi_netdev_enable_iface] Exited.
[ 201.159271] rmnet_vnd_register_device(rmnet_mhi0.1)=0
[ 201.162953] rmnet_vnd_register_device(rmnet_mhi0.2)=0
[ 201.167698] rmnet_vnd_register_device(rmnet_mhi0.3)=0
[ 201.172178] rmnet_vnd_register_device(rmnet_mhi0.4)=0
root@OpenWrt:~# brctl addbr br0
root@OpenWrt:~# brctl addif br0 eth1
root@OpenWrt:~# brctl addif br0 rmnet_mhi0.2
root@OpenWrt:~# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.00001c353487 no eth1
rmnet_mhi0.2
root@OpenWrt:~# quectel-qmi-proxy -d /dev/mhi_QMI0 &
[04-14_06:44:01:556] Will use cdc-wdm='/dev/mhi_QMI0', proxy='quectel-qmi-proxy0'
[04-14_06:44:01:573] qmi_proxy_init enter
[04-14_06:44:01:573] qmi_proxy_loop enter thread_id 0xb6f20d44
[04-14_06:44:03:574] qmi_proxy_init succful
[04-14_06:44:03:574] local server: quectel-qmi-proxy0 sockfd = 4
[04-14_06:44:03:575] qmi_proxy_server_fd = 4
root@OpenWrt:~# quectel-CM -n 1 -s cmnet &
[04-14_06:47:53:303] Quectel_QConnectManager_Linux_V1.6.0.25
[04-14_06:47:53:314] network interface '' or qmidev '' is not exist
[04-14_06:47:53:315] netcard driver = pcie_mhi, driver version = V1.3.0.17
[04-14_06:47:53:316] qmap_mode = 4, qmap_version = 9, qmap_size = 16384, muxid = 0x81, qmap_netcard = rmnet_mhi0.1
[04-14_06:47:53:316] Modem works in QMI mode
[04-14_06:47:53:318] connect to quectel-qmi-proxy0 sockfd = 7
[04-14_06:47:53:318] cdc_wdm_fd = 7
[04-14_06:47:53:326] Get clientWDS = 15
[04-14_06:47:53:329] Get clientDMS = 2
[04-14_06:47:53:334] Get clientNAS = 4
[04-14_06:47:53:338] Get clientUIM = 1
[04-14_06:47:53:343] Get clientWDA = 1
[04-14_06:47:53:347] requestBaseBandVersion RM500QGLABR10A03M4G
[04-14_06:47:53:351] qmap_settings.rx_urb_size = 16384
[04-14_06:47:53:352] qmap_settings.ul_data_aggregation_max_datagrams = 11
[04-14_06:47:53:352] qmap_settings.ul_data_aggregation_max_size = 8192
[04-14_06:47:53:352] qmap_settings.dl_minimum_padding = 0
[04-14_06:47:53:369] requestGetSIMStatus SIMStatus: SIM_READY
[04-14_06:47:53:370] requestSetProfile[1] cmnet///0
[04-14_06:47:53:402] requestGetProfile[1] cmnet///0
[04-14_06:47:53:407] requestRegistrationState2 MCC: 0, MNC: 0, PS: Detached, DataCap: UNKNOW
[04-14_06:47:53:411] requestQueryDataCall IPv4ConnectionStatus: DISCONNECTED
[04-14_06:47:53:412] ifconfig rmnet_mhi0 down
[04-14_06:47:53:436] ifconfig rmnet_mhi0.1 0.0.0.0
[04-14_06:47:53:460] ifconfig rmnet_mhi0.1 down
[04-14_06:48:26:399] requestRegistrationState2 MCC: 460, MNC: 0, PS: Detached, DataCap: UNKNOW
[04-14_06:48:26:405] requestRegistrationState2 MCC: 460, MNC: 0, PS: Detached, DataCap: UNKNOW
[04-14_06:48:26:411] requestRegistrationState2 MCC: 460, MNC: 0, PS: Detached, DataCap: UNKNOW
[04-14_06:48:26:970] requestRegistrationState2 MCC: 460, MNC: 0, PS: Attached, DataCap: 5G_NSA
[04-14_06:48:26:992] requestSetupDataCall WdsConnectionIPv4Handle: 0x34176710
[04-14_06:48:27:005] ifconfig rmnet_mhi0 up
[04-14_06:48:27:031] ifconfig rmnet_mhi0.1 up
[04-14_06:48:27:057] you are use OpenWrt?
[04-14_06:48:27:057] should not calling udhcpc manually?
[04-14_06:48:27:080] should use "/sbin/ifstaus wan" to check rmnet_mhi0.1 's status?
[04-14_06:48:27:081] busybox udhcpc -f -n -q -t 5 -i rmnet_mhi0.1
[04-14_06:48:27:363] udhcpc: ifconfig rmnet_mhi0.1 10.245.22.3 netmask 255.255.255.248 broadcast +
[04-14_06:48:27:398] udhcpc: setting default routers: 10.245.22.4
[04-14_06:48:27:491] requestRegistrationState2 MCC: 460, MNC: 0, PS: Attached, DataCap: 5G_NSA
root@OpenWrt:~# quectel-CM -n 2 -s 4gnet -b &
[04-14_06:48:06:842] Quectel_QConnectManager_Linux_V1.6.0.25
[04-14_06:48:06:853] network interface '' or qmidev '' is not exist
[04-14_06:48:06:854] netcard driver = pcie_mhi, driver version = V1.3.0.17
[04-14_06:48:06:855] qmap_mode = 4, qmap_version = 9, qmap_size = 16384, muxid = 0x82, qmap_netcard = rmnet_mhi0.2
[04-14_06:48:06:855] Modem works in QMI mode
[04-14_06:48:06:857] connect to quectel-qmi-proxy0 sockfd = 7
[04-14_06:48:06:858] cdc_wdm_fd = 7
[04-14_06:48:06:864] Get clientWDS = 16
[04-14_06:48:06:867] Get clientDMS = 3
[04-14_06:48:06:871] Get clientNAS = 5
[04-14_06:48:06:874] Get clientUIM = 2
[04-14_06:48:06:879] Get clientWDA = 2
[04-14_06:48:06:886] requestBaseBandVersion RM500QGLABR10A03M4G
[04-14_06:48:06:891] qmap_settings.rx_urb_size = 16384
[04-14_06:48:06:891] qmap_settings.ul_data_aggregation_max_datagrams = 11
[04-14_06:48:06:892] qmap_settings.ul_data_aggregation_max_size = 8192
[04-14_06:48:06:892] qmap_settings.dl_minimum_padding = 0
[04-14_06:48:06:909] requestGetSIMStatus SIMStatus: SIM_READY
[04-14_06:48:06:909] requestSetProfile[2] 4gnet///0
[04-14_06:48:06:940] requestGetProfile[2] 4gnet///0
[04-14_06:48:06:944] requestRegistrationState2 MCC: 0, MNC: 0, PS: Detached, DataCap: UNKNOW
[04-14_06:48:06:949] requestQueryDataCall IPv4ConnectionStatus: DISCONNECTED
[04-14_06:48:06:949] ifconfig rmnet_mhi0 down
[04-14_06:48:06:973] ifconfig rmnet_mhi0.2 0.0.0.0
[04-14_06:48:06:998] ifconfig rmnet_mhi0.2 down
[04-14_06:48:26:400] requestRegistrationState2 MCC: 460, MNC: 0, PS: Detached, DataCap: UNKNOW
[04-14_06:48:26:405] requestRegistrationState2 MCC: 460, MNC: 0, PS: Detached, DataCap: UNKNOW
[04-14_06:48:26:411] requestRegistrationState2 MCC: 460, MNC: 0, PS: Detached, DataCap: UNKNOW
[04-14_06:48:26:970] requestRegistrationState2 MCC: 460, MNC: 0, PS: Attached, DataCap: 5G_NSA
[04-14_06:48:27:220] requestSetupDataCall WdsConnectionIPv4Handle: 0x341450a0
[04-14_06:48:27:228] requestRegistrationState2 MCC: 460, MNC: 0, PS: Attached, DataCap: 5G_NSA
[04-14_06:48:27:238] ifconfig rmnet_mhi0 up
[04-14_06:48:27:263] ifconfig rmnet_mhi0.2 up
[04-14_06:48:27:313] echo '0xaf51be9' > /sys/class/net/rmnet_mhi0.2/bridge_ipv4
root@OpenWrt:~# ifconfig rmnet_mhi0.1
rmnet_mhi0.1 Link encap:Ethernet HWaddr 02:50:F4:00:00:00
inet addr:10.245.22.3 Mask:255.255.255.248
inet6 addr: fe80::50:f4ff:fe00:0/64 Scope:Link
UP RUNNING NOARP MTU:1500 Metric:1
RX packets:6 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1836 (1.7 KiB) TX bytes:2052 (2.0 KiB)
root@OpenWrt:~# ifconfig rmnet_mhi0.2
rmnet_mhi0.2 Link encap:Ethernet HWaddr 02:50:F4:00:00:00
inet6 addr: fe80::50:f4ff:fe00:0/64 Scope:Link
UP RUNNING NOARP MTU:1500 Metric:1
RX packets:347 errors:0 dropped:0 overruns:0 frame:0
TX packets:795 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:119871 (117.0 KiB) TX bytes:121254 (118.4 KiB)
root@OpenWrt:~# ifconfig br0 up
[ 520.005476] rmnet_mhi0.2 PC Mac Address: 00:0e:c6:a6:6c:f1
[ 520.025896] rmnet_mhi0.2 PC Mac Address: 00:0e:c6:a6:6c:f1
[ 520.028002] rmnet_mhi0.2 PC Mac Address: 00:0e:c6:a6:6c:f1
[ 520.144371] rmnet_mhi0.2 sip = 10.245.27.233, tip=10.245.27.234, ipv4=10.245.27.233
[ 520.410052] rmnet_mhi0.2 sip = 0.0.0.0, tip=10.245.27.233, ipv4=10.245.27.233
[ 520.414504] rmnet_mhi0.2 sip = 10.245.27.233, tip=10.245.27.234, ipv4=10.245.27.233
[ 520.847074] rmnet_mhi0.2 sip = 10.245.27.233, tip=10.245.27.234, ipv4=10.245.27.233
[ 521.410241] rmnet_mhi0.2 sip = 0.0.0.0, tip=10.245.27.233, ipv4=10.245.27.233
[ 522.410455] rmnet_mhi0.2 sip = 0.0.0.0, tip=10.245.27.233, ipv4=10.245.27.233
[ 522.822594] rmnet_mhi0.2 sip = 10.245.27.233, tip=10.245.27.234, ipv4=10.245.27.233
[ 523.410638] rmnet_mhi0.2 sip = 10.245.27.233, tip=10.245.27.233, ipv4=10.245.27.233
[ 523.510028] rmnet_mhi0.2 sip = 10.245.27.233, tip=10.245.27.234, ipv4=10.245.27.233
[ 523.997961] rmnet_mhi0.2 sip = 10.245.27.233, tip=10.245.27.234, ipv4=10.245.27.233
[ 543.799483] rmnet_mhi0.2 sip = 10.245.27.233, tip=10.245.27.234, ipv4=10.245.27.233
[ 543.929301] rmnet_mhi0.2 sip = 10.245.27.233, tip=10.245.27.234, ipv4=10.245.27.233

View File

@ -0,0 +1,65 @@
root@ZhuoTK:/# dmesg
[ 15.840000] qmi_wwan_q 1-1.3:1.4: cdc-wdm0: USB WDM device
[ 15.860000] qmi_wwan_q 1-1.3:1.4: Quectel Android work on RawIP mode
[ 15.860000] qmi_wwan_q 1-1.3:1.4: rx_urb_size = 1520
[ 15.870000] qmi_wwan_q 1-1.3:1.4 wwan0: register 'qmi_wwan_q' at usb-101c0000.ehci-1.3, WWAN/QMI device, da:0b:ce:b2:db:21
root@ZhuoTK:/# quectel-CM -s cment &
[04-13_03:20:20:456] Quectel_QConnectManager_Linux_V1.6.0.25
[04-13_03:20:20:459] Find /sys/bus/usb/devices/1-1.3 idVendor=0x2c7c idProduct=0x125, bus=0x001, dev=0x003
[04-13_03:20:20:460] Auto find qmichannel = /dev/cdc-wdm0
[04-13_03:20:20:460] Auto find usbnet_adapter = wwan0
[04-13_03:20:20:461] netcard driver = qmi_wwan_q, driver version = V1.2.0.23
[04-13_03:20:20:461] Modem works in QMI mode
[04-13_03:20:20:469] cdc_wdm_fd = 7
[04-13_03:20:20:547] Get clientWDS = 4
[04-13_03:20:20:579] Get clientDMS = 1
[04-13_03:20:20:611] Get clientNAS = 4
[04-13_03:20:20:643] Get clientUIM = 1
[04-13_03:20:20:675] Get clientWDA = 1
[04-13_03:20:20:707] requestBaseBandVersion EC25EFAR06A11M4G
[04-13_03:20:20:836] requestGetSIMStatus SIMStatus: SIM_READY
[04-13_03:20:20:836] requestSetProfile[1] cment///0
[04-13_03:20:20:899] requestGetProfile[1] cment///0
[04-13_03:20:20:931] requestRegistrationState2 MCC: 460, MNC: 0, PS: Attached, DataCap: LTE
[04-13_03:20:20:963] requestQueryDataCall IPv4ConnectionStatus: DISCONNECTED
[04-13_03:20:20:963] ifconfig wwan0 0.0.0.0
[04-13_03:20:20:976] ifconfig wwan0 down
[04-13_03:20:21:186] requestSetupDataCall WdsConnectionIPv4Handle: 0x8723e780
[04-13_03:20:21:316] ifconfig wwan0 up
[04-13_03:20:21:329] you are use OpenWrt?
[04-13_03:20:21:330] should not calling udhcpc manually?
[04-13_03:20:21:330] should modify /etc/config/network as below?
[04-13_03:20:21:330] config interface wan
[04-13_03:20:21:330] option ifname wwan0
[04-13_03:20:21:330] option proto dhcp
[04-13_03:20:21:330] should use "/sbin/ifstaus wan" to check wwan0 's status?
[04-13_03:20:21:331] busybox udhcpc -f -n -q -t 5 -i wwan0
[04-13_03:20:21:341] udhcpc (v1.23.2) started
[04-13_03:20:21:353] Sending discover...
[04-13_03:20:21:362] Sending select for 10.90.1.113...
[04-13_03:20:21:365] Lease of 10.90.1.113 obtained, lease time 7200
[04-13_03:20:21:370] udhcpc: ifconfig wwan0 10.90.1.113 netmask 255.255.255.252 broadcast +
[04-13_03:20:21:380] udhcpc: setting default routers: 10.90.1.114
root@ZhuoTK:/# ifconfig wwan0
wwan0 Link encap:Ethernet HWaddr 00:CA:01:91:97:BA
inet addr:10.90.1.113 Mask:255.255.255.252
inet6 addr: fe80::2ca:1ff:fe91:97ba/64 Scope:Link
UP RUNNING NOARP MTU:1500 Metric:1
RX packets:38 errors:0 dropped:0 overruns:0 frame:0
TX packets:46 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:5244 (5.1 KiB) TX bytes:6964 (6.8 KiB)
root@ZhuoTK:/# ip ro show
default via 10.90.1.114 dev wwan0
10.90.1.112/30 dev wwan0 proto kernel scope link src 10.90.1.113
192.168.1.0/24 dev br-lan proto kernel scope link src 192.168.1.251
root@ZhuoTK:/# killall quectel-CM
[04-13_03:20:46:130] requestDeactivateDefaultPDP WdsConnectionIPv4Handle
[04-13_03:20:46:406] ifconfig wwan0 0.0.0.0
[04-13_03:20:46:418] ifconfig wwan0 down
[04-13_03:20:46:600] QmiWwanThread exit
[04-13_03:20:46:600] qmi_main exit

View File

@ -0,0 +1,57 @@
root@ZhuoTK:/# insmod qmi_wwan_q.ko
[ 116.910000] qmi_wwan_q 1-1.3:1.4: cdc-wdm0: USB WDM device
[ 116.930000] qmi_wwan_q 1-1.3:1.4: Quectel Android work on RawIP mode
[ 116.930000] qmi_wwan_q 1-1.3:1.4: rx_urb_size = 1520
[ 116.940000] qmi_wwan_q 1-1.3:1.4 wwan0: register 'qmi_wwan_q' at usb-101c0000.ehci-1.3, WWAN/QMI device, 06:fb:51:a3:d6:c5
[ 116.950000] usbcore: registered new interface driver qmi_wwan_q
root@ZhuoTK:/# brctl addbr br0
root@ZhuoTK:/# brctl addif br0 eth0.1
root@ZhuoTK:/# brctl addif br0 wwan0
root@ZhuoTK:/# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.00ca019197b9 no eth0.1
wwan0
root@ZhuoTK:/# quectel-CM -s cmnet -b &
root@ZhuoTK:/# [04-13_05:13:39:369] Quectel_QConnectManager_Linux_V1.6.0.25
[04-13_05:13:39:372] Find /sys/bus/usb/devices/1-1.3 idVendor=0x2c7c idProduct=0x125, bus=0x001, dev=0x003
[ 143.340000] net wwan0: bridge_mode change to 0x1
[04-13_05:13:39:373] Auto find qmichannel = /dev/cdc-wdm0
[04-13_05:13:39:374] Auto find usbnet_adapter = wwan0
[04-13_05:13:39:374] netcard driver = qmi_wwan_q, driver version = V1.2.0.23
[04-13_05:13:39:380] Modem works in QMI mode
[04-13_05:13:39:388] cdc_wdm_fd = 7
[04-13_05:13:39:466] Get clientWDS = 5
[04-13_05:13:39:496] Get clientDMS = 2
[04-13_05:13:39:527] Get clientNAS = 4
[04-13_05:13:39:559] Get clientUIM = 1
[04-13_05:13:39:592] Get clientWDA = 1
[04-13_05:13:39:626] requestBaseBandVersion EC25EFAR06A11M4G
[04-13_05:13:39:752] requestGetSIMStatus SIMStatus: SIM_READY
[04-13_05:13:39:752] requestSetProfile[1] cmnet///0
[04-13_05:13:39:816] requestGetProfile[1] cmnet///0
[04-13_05:13:39:848] requestRegistrationState2 MCC: 460, MNC: 0, PS: Attached, DataCap: LTE
[04-13_05:13:39:879] requestQueryDataCall IPv4ConnectionStatus: DISCONNECTED
[04-13_05:13:39:880] ifconfig wwan0 0.0.0.0
[04-13_05:13:39:893] ifconfig wwan0 down
[04-13_05:13:39:943] requestSetupDataCall WdsConnectionIPv4Handle: 0x872627c0
[04-13_05:13:40:073] ifconfig wwan0 up
[04-13_05:13:40:085] echo '0xa8d9237' > /sys/class/net/wwan0/bridge_ipv4
root@ZhuoTK:/# ifconfig br0 up
[ 165.730000] wwan0 PC Mac Address: 00:0e:c6:a6:6c:f1
[ 165.750000] wwan0 PC Mac Address: 00:0e:c6:a6:6c:f1
[ 165.860000] wwan0 sip = 10.141.146.55, tip=10.141.146.56, ipv4=10.141.146.55
[ 165.870000] wwan0 sip = 10.141.146.55, tip=10.141.146.56, ipv4=10.141.146.55
[ 165.990000] wwan0 sip = 10.141.146.55, tip=10.141.146.56, ipv4=10.141.146.55
[ 166.010000] wwan0 sip = 0.0.0.0, tip=10.141.146.55, ipv4=10.141.146.55
[ 166.070000] wwan0 sip = 10.141.146.55, tip=10.141.146.56, ipv4=10.141.146.55
[ 167.010000] wwan0 sip = 0.0.0.0, tip=10.141.146.55, ipv4=10.141.146.55
[ 167.480000] br0: port 2(wwan0) entered forwarding state
[ 167.520000] br0: port 1(eth0.1) entered forwarding state
[ 168.020000] wwan0 sip = 0.0.0.0, tip=10.141.146.55, ipv4=10.141.146.55
[ 169.010000] wwan0 sip = 10.141.146.55, tip=10.141.146.55, ipv4=10.141.146.55
[ 169.120000] wwan0 sip = 10.141.146.55, tip=10.141.146.56, ipv4=10.141.146.55
[ 169.130000] wwan0 sip = 10.141.146.55, tip=10.141.146.56, ipv4=10.141.146.55
[ 176.620000] wwan0 sip = 10.141.146.55, tip=10.141.146.56, ipv4=10.141.146.55

View File

@ -0,0 +1,54 @@
root@ZhuoTK:/# insmod qmi_wwan_q.ko qmap_mode=1
[ 1367.200000] usbcore: registered new interface driver qmi_wwan_q
[ 1383.840000] usb 1-1.3: new high-speed USB device number 7 using ehci-platform
[ 1384.080000] qmi_wwan_q 1-1.3:1.4: cdc-wdm0: USB WDM device
[ 1384.080000] qmi_wwan_q 1-1.3:1.4: Quectel Android work on RawIP mode
[ 1384.100000] qmi_wwan_q 1-1.3:1.4: rx_urb_size = 4096
[ 1384.100000] qmi_wwan_q 1-1.3:1.4 wwan0: register 'qmi_wwan_q' at usb-101c0000.ehci-1.3, WWAN/QMI device, da:0b:ce:b2:db:21
root@ZhuoTK:/# quectel-CM -s cmnet &
[04-13_03:41:28:144] Quectel_QConnectManager_Linux_V1.6.0.25
[04-13_03:41:28:146] Find /sys/bus/usb/devices/1-1.3 idVendor=0x2c7c idProduct=0x125, bus=0x001, dev=0x007
[04-13_03:41:28:148] Auto find qmichannel = /dev/cdc-wdm0
[04-13_03:41:28:148] Auto find usbnet_adapter = wwan0
[04-13_03:41:28:148] netcard driver = qmi_wwan_q, driver version = V1.2.0.23
[04-13_03:41:28:149] qmap_mode = 1, qmap_version = 5, qmap_size = 4096, muxid = 0x81, qmap_netcard = wwan0
[04-13_03:41:28:150] Modem works in QMI mode
[04-13_03:41:28:158] cdc_wdm_fd = 7
[04-13_03:41:28:238] Get clientWDS = 4
[04-13_03:41:28:271] Get clientDMS = 1
[04-13_03:41:28:302] Get clientNAS = 4
[04-13_03:41:28:334] Get clientUIM = 1
[04-13_03:41:28:365] Get clientWDA = 1
[04-13_03:41:28:397] requestBaseBandVersion EC25EFAR06A11M4G
[04-13_03:41:28:430] qmap_settings.rx_urb_size = 4096
[ 1393.530000] net wwan0: ul_data_aggregation_max_datagrams=11, ul_data_aggregation_max_size=4096, dl_minimum_padding=0
[04-13_03:41:28:431] qmap_settings.ul_data_aggregation_max_datagrams = 11
[04-13_03:41:28:431] qmap_settings.ul_data_aggregation_max_size = 4096
[04-13_03:41:28:431] qmap_settings.dl_minimum_padding = 0
[04-13_03:41:28:557] requestGetSIMStatus SIMStatus: SIM_READY
[04-13_03:41:28:558] requestSetProfile[1] cmnet///0
[04-13_03:41:28:622] requestGetProfile[1] cmnet///0
[04-13_03:41:28:654] requestRegistrationState2 MCC: 460, MNC: 0, PS: Attached, DataCap: LTE
[04-13_03:41:28:685] requestQueryDataCall IPv4ConnectionStatus: DISCONNECTED
[ 1393.790000] net wwan0: link_state 0x1 -> 0x0
[04-13_03:41:28:692] ifconfig wwan0 0.0.0.0
[04-13_03:41:28:703] ifconfig wwan0 down
[04-13_03:41:28:751] requestSetupDataCall WdsConnectionIPv4Handle: 0x8729a6b0
[ 1393.980000] net wwan0: link_state 0x0 -> 0x1
[04-13_03:41:28:882] ifconfig wwan0 up
[04-13_03:41:28:895] you are use OpenWrt?
[04-13_03:41:28:895] should not calling udhcpc manually?
[04-13_03:41:28:895] should modify /etc/config/network as below?
[04-13_03:41:28:896] config interface wan
[04-13_03:41:28:896] option ifname wwan0
[04-13_03:41:28:896] option proto dhcp
[04-13_03:41:28:896] should use "/sbin/ifstaus wan" to check wwan0 's status?
[04-13_03:41:28:896] busybox udhcpc -f -n -q -t 5 -i wwan0
[04-13_03:41:28:907] udhcpc (v1.23.2) started
[04-13_03:41:28:919] Sending discover...
[04-13_03:41:28:925] Sending select for 10.129.198.20...
[04-13_03:41:28:929] Lease of 10.129.198.20 obtained, lease time 7200
[04-13_03:41:28:934] udhcpc: ifconfig wwan0 10.129.198.20 netmask 255.255.255.248 broadcast +
[04-13_03:41:28:949] udhcpc: setting default routers: 10.129.198.21

View File

@ -0,0 +1,86 @@
root@ZhuoTK:/# insmod qmi_wwan_q.ko qmap_mode=1
[ 49.000000] qmi_wwan_q 1-1.3:1.4: cdc-wdm0: USB WDM device
[ 49.000000] qmi_wwan_q 1-1.3:1.4: Quectel Android work on RawIP mode
[ 49.020000] qmi_wwan_q 1-1.3:1.4: rx_urb_size = 4096
[ 49.020000] qmi_wwan_q 1-1.3:1.4 wwan0: register 'qmi_wwan_q' at usb-101c0000.ehci-1.3, WWAN/QMI device, de:ae:5c:82:b5:b2
[ 49.030000] usbcore: registered new interface driver qmi_wwan_q
root@ZhuoTK:/# brctl addbr br0
root@ZhuoTK:/# brctl addif br0 eth0.1
root@ZhuoTK:/# brctl addif br0 wwan0
root@ZhuoTK:/# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.00ca019197b9 no eth0.1
wwan0
root@ZhuoTK:/# quectel-CM -s cmnet -b &
[04-13_05:11:46:442] Quectel_QConnectManager_Linux_V1.6.0.25
[04-13_05:11:46:444] Find /sys/bus/usb/devices/1-1.3 idVendor=0x2c7c idProduct=0x125, bus=0x001, dev=0x003
[ 84.340000] net wwan0: bridge_mode change to 0x1
[04-13_05:11:46:446] Auto find qmichannel = /dev/cdc-wdm0
[04-13_05:11:46:446] Auto find usbnet_adapter = wwan0
[04-13_05:11:46:446] netcard driver = qmi_wwan_q, driver version = V1.2.0.23
[04-13_05:11:46:447] qmap_mode = 1, qmap_version = 5, qmap_size = 4096, muxid = 0x81, qmap_netcard = wwan0
[04-13_05:11:46:454] Modem works in QMI mode
[04-13_05:11:46:462] cdc_wdm_fd = 7
[04-13_05:11:46:537] Get clientWDS = 5
[04-13_05:11:46:569] Get clientDMS = 1
[04-13_05:11:46:601] Get clientNAS = 4
[04-13_05:11:46:633] Get clientUIM = 1
[04-13_05:11:46:666] Get clientWDA = 1
[04-13_05:11:46:697] requestBaseBandVersion EC25EFAR06A11M4G
[04-13_05:11:46:730] qmap_settings.rx_urb_size = 4096
[ 84.620000] net wwan0: ul_data_aggregation_max_datagrams=11, ul_data_aggregation_max_size=4096, dl_minimum_padding=0
[04-13_05:11:46:730] qmap_settings.ul_data_aggregation_max_datagrams = 11
[04-13_05:11:46:730] qmap_settings.ul_data_aggregation_max_size = 4096
[04-13_05:11:46:730] qmap_settings.dl_minimum_padding = 0
[04-13_05:11:46:859] requestGetSIMStatus SIMStatus: SIM_READY
[04-13_05:11:46:859] requestSetProfile[1] cmnet///0
[04-13_05:11:46:922] requestGetProfile[1] cmnet///0
[04-13_05:11:46:954] requestRegistrationState2 MCC: 460, MNC: 0, PS: Attached, DataCap: LTE
[04-13_05:11:46:986] requestQueryDataCall IPv4ConnectionStatus: DISCONNECTED
[ 84.880000] net wwan0: link_state 0x1 -> 0x0
[04-13_05:11:46:992] ifconfig wwan0 0.0.0.0
[04-13_05:11:47:005] ifconfig wwan0 down
[04-13_05:11:47:050] requestSetupDataCall WdsConnectionIPv4Handle: 0x872a5830
[ 85.070000] net wwan0: link_state 0x0 -> 0x1
[04-13_05:11:47:183] ifconfig wwan0 up
[04-13_05:11:47:195] echo '0xa54a78b' > /sys/class/net/wwan0/bridge_ipv4
root@ZhuoTK:/# ifconfig wwan0
wwan0 Link encap:Ethernet HWaddr DE:AE:5C:82:B5:B2
inet6 addr: fe80::dcae:5cff:fe82:b5b2/64 Scope:Link
UP RUNNING NOARP MTU:1500 Metric:1
RX packets:3792 errors:0 dropped:0 overruns:0 frame:0
TX packets:3271 errors:0 dropped:36 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2271762 (2.1 MiB) TX bytes:565184 (551.9 KiB)
root@ZhuoTK:/# ifconfig br0 up
[ 89.530000] br0: port 2(wwan0) entered forwarding state
[ 89.530000] br0: port 2(wwan0) entered forwarding state
[ 89.540000] br0: port 1(eth0.1) entered forwarding state
[ 89.540000] br0: port 1(eth0.1) entered forwarding state
root@ZhuoTK:/#
[ 93.720000] wwan0 sip = 192.168.1.153, tip=10.84.167.140, ipv4=10.84.167.139
[ 104.560000] br0: port 2(wwan0) entered forwarding state
[ 104.560000] br0: port 1(eth0.1) entered forwarding state
[ 111.750000] rt305x-esw 10110000.esw: link changed 0x00
[ 116.440000] rt305x-esw 10110000.esw: link changed 0x01
[ 116.620000] wwan0 PC Mac Address: 00:0e:c6:a6:6c:f1
[ 116.680000] wwan0 PC Mac Address: 00:0e:c6:a6:6c:f1
[ 116.690000] wwan0 PC Mac Address: 00:0e:c6:a6:6c:f1
[ 116.760000] wwan0 sip = 10.84.167.139, tip=10.84.167.140, ipv4=10.84.167.139
[ 117.050000] wwan0 sip = 10.84.167.139, tip=10.84.167.140, ipv4=10.84.167.139
[ 117.220000] wwan0 sip = 0.0.0.0, tip=10.84.167.139, ipv4=10.84.167.139
[ 117.820000] wwan0 sip = 10.84.167.139, tip=10.84.167.140, ipv4=10.84.167.139
[ 118.220000] wwan0 sip = 0.0.0.0, tip=10.84.167.139, ipv4=10.84.167.139
[ 118.300000] wwan0 sip = 10.84.167.139, tip=10.84.167.140, ipv4=10.84.167.139
[ 119.220000] wwan0 sip = 0.0.0.0, tip=10.84.167.139, ipv4=10.84.167.139
[ 120.220000] wwan0 sip = 10.84.167.139, tip=10.84.167.139, ipv4=10.84.167.139
[ 120.300000] wwan0 sip = 10.84.167.139, tip=10.84.167.140, ipv4=10.84.167.139
[ 121.430000] wwan0 sip = 10.84.167.139, tip=10.84.167.140, ipv4=10.84.167.139
[ 141.730000] wwan0 sip = 10.84.167.139, tip=10.84.167.140, ipv4=10.84.167.139
[ 144.390000] wwan0 sip = 10.84.167.139, tip=10.84.167.140, ipv4=10.84.167.139
[ 144.510000] wwan0 sip = 10.84.167.139, tip=10.84.167.140, ipv4=10.84.167.139

View File

@ -0,0 +1,185 @@
root@ZhuoTK:/# insmod qmi_wwan_q.ko qmap_mode=4
[ 1515.180000] usbcore: registered new interface driver qmi_wwan_q
[ 1530.260000] usb 1-1.3: new high-speed USB device number 8 using ehci-platform
[ 1530.500000] qmi_wwan_q 1-1.3:1.4: cdc-wdm0: USB WDM device
[ 1530.500000] qmi_wwan_q 1-1.3:1.4: Quectel Android work on RawIP mode
[ 1530.520000] qmi_wwan_q 1-1.3:1.4: rx_urb_size = 4096
[ 1530.520000] qmi_wwan_q 1-1.3:1.4 wwan0: register 'qmi_wwan_q' at usb-101c0000.ehci-1.3, RMNET/USB device, da:0b:ce:b2:db:21
[ 1530.530000] net wwan0: qmap_register_device wwan0_1
[ 1530.540000] net wwan0: qmap_register_device wwan0_2
[ 1530.550000] net wwan0: qmap_register_device wwan0_3
[ 1530.550000] net wwan0: qmap_register_device wwan0_4
root@ZhuoTK:~# quectel-qmi-proxy &
[04-13_03:44:53:958] Will use cdc-wdm='/dev/cdc-wdm0', proxy='quectel-qmi-proxy0'
[04-13_03:44:53:959] qmi_proxy_init enter
[04-13_03:44:53:960] qmi_proxy_loop enter thread_id 0x77c07530
[04-13_03:44:54:960] qmi_proxy_init succful
[04-13_03:44:54:960] local server: quectel-qmi-proxy0 sockfd = 4
[04-13_03:44:54:960] qmi_proxy_server_fd = 4
[04-13_03:45:04:346] +++ ClientFd=5
[04-13_03:45:04:410] +++ ClientFd=5 QMIType=1 ClientId=4
[04-13_03:45:04:442] +++ ClientFd=5 QMIType=2 ClientId=1
[04-13_03:45:04:474] +++ ClientFd=5 QMIType=3 ClientId=4
[04-13_03:45:04:506] +++ ClientFd=5 QMIType=11 ClientId=1
[04-13_03:45:04:539] +++ ClientFd=5 QMIType=26 ClientId=1
[04-13_03:45:10:770] +++ ClientFd=6
[04-13_03:45:10:811] +++ ClientFd=6 QMIType=1 ClientId=21
[04-13_03:45:10:843] +++ ClientFd=6 QMIType=2 ClientId=2
[04-13_03:45:10:875] +++ ClientFd=6 QMIType=3 ClientId=5
[04-13_03:45:10:907] +++ ClientFd=6 QMIType=11 ClientId=2
[04-13_03:46:31:419] --- ClientFd=6 QMIType=1 ClientId=21
[04-13_03:46:31:451] --- ClientFd=6 QMIType=2 ClientId=2
[04-13_03:46:31:484] --- ClientFd=6 QMIType=3 ClientId=5
[04-13_03:46:31:517] --- ClientFd=6 QMIType=11 ClientId=2
[04-13_03:46:31:518] qmi_proxy_loop poll fd = 6, revents = 0011
[04-13_03:46:31:519] --- ClientFd=6
root@ZhuoTK:/# quectel-CM -n 1 -s cmnet &
root@ZhuoTK:/# [04-13_03:45:04:340] Quectel_QConnectManager_Linux_V1.6.0.25
[04-13_03:45:04:343] Find /sys/bus/usb/devices/1-1.3 idVendor=0x2c7c idProduct=0x125, bus=0x001, dev=0x008
[04-13_03:45:04:344] Auto find qmichannel = /dev/cdc-wdm0
[04-13_03:45:04:344] Auto find usbnet_adapter = wwan0
[04-13_03:45:04:345] netcard driver = qmi_wwan_q, driver version = V1.2.0.23
[04-13_03:45:04:345] qmap_mode = 4, qmap_version = 5, qmap_size = 4096, muxid = 0x81, qmap_netcard = wwan0_1
[04-13_03:45:04:345] Modem works in QMI mode
[04-13_03:45:04:347] connect to quectel-qmi-proxy0 sockfd = 7
[04-13_03:45:04:347] cdc_wdm_fd = 7
[04-13_03:45:04:411] Get clientWDS = 4
[04-13_03:45:04:443] Get clientDMS = 1
[04-13_03:45:04:475] Get clientNAS = 4
[04-13_03:45:04:507] Get clientUIM = 1
[04-13_03:45:04:540] Get clientWDA = 1
[04-13_03:45:04:571] requestBaseBandVersion EC25EFAR06A11M4G
[04-13_03:45:04:602] qmap_settings.rx_urb_size = 4096
[ 1609.700000] net wwan0: ul_data_aggregation_max_datagrams=11, ul_data_aggregation_max_size=4096, dl_minimum_padding=0
[04-13_03:45:04:603] qmap_settings.ul_data_aggregation_max_datagrams = 11
[04-13_03:45:04:603] qmap_settings.ul_data_aggregation_max_size = 4096
[04-13_03:45:04:603] qmap_settings.dl_minimum_padding = 0
[04-13_03:45:04:731] requestGetSIMStatus SIMStatus: SIM_READY
[04-13_03:45:04:731] requestSetProfile[1] cmnet///0
[04-13_03:45:04:795] requestGetProfile[1] cmnet///0
[04-13_03:45:04:827] requestRegistrationState2 MCC: 460, MNC: 0, PS: Attached, DataCap: LTE
[04-13_03:45:04:858] requestQueryDataCall IPv4ConnectionStatus: DISCONNECTED
[ 1609.960000] net wwan0: link_state 0x1 -> 0x0
[04-13_03:45:04:865] ifconfig wwan0 down
[04-13_03:45:04:879] ifconfig wwan0_1 0.0.0.0
[04-13_03:45:04:889] ifconfig wwan0_1 down
[04-13_03:45:04:955] requestSetupDataCall WdsConnectionIPv4Handle: 0x87253410
[ 1610.180000] net wwan0: link_state 0x0 -> 0x1
[04-13_03:45:05:087] ifconfig wwan0 up
[ 1610.200000] IPv6: ADDRCONF(NETDEV_UP): wwan0: link is not ready
[04-13_03:45:05:105] ifconfig wwan0_1 up
[ 1610.220000] IPv6: ADDRCONF(NETDEV_CHANGE): wwan0: link becomes ready
[04-13_03:45:05:125] you are use OpenWrt?
[04-13_03:45:05:125] should not calling udhcpc manually?
[04-13_03:45:05:125] should modify /etc/config/network as below?
[04-13_03:45:05:125] config interface wan
[04-13_03:45:05:125] option ifname wwan0_1
[04-13_03:45:05:125] option proto dhcp
[04-13_03:45:05:126] should use "/sbin/ifstaus wan" to check wwan0_1 's status?
[04-13_03:45:05:126] busybox udhcpc -f -n -q -t 5 -i wwan0_1
[04-13_03:45:05:136] udhcpc (v1.23.2) started
[04-13_03:45:05:148] Sending discover...
[04-13_03:45:05:155] Sending select for 10.244.10.206...
[04-13_03:45:05:160] Lease of 10.244.10.206 obtained, lease time 7200
[04-13_03:45:05:165] udhcpc: ifconfig wwan0_1 10.244.10.206 netmask 255.255.255.252 broadcast +
[04-13_03:45:05:174] udhcpc: setting default routers: 10.244.10.205
root@ZhuoTK:/# quectel-CM -n 2 -s 4gnet &
[04-13_03:45:10:764] Quectel_QConnectManager_Linux_V1.6.0.25
[04-13_03:45:10:767] Find /sys/bus/usb/devices/1-1.3 idVendor=0x2c7c idProduct=0x125, bus=0x001, dev=0x008
[04-13_03:45:10:768] Auto find qmichannel = /dev/cdc-wdm0
[04-13_03:45:10:768] Auto find usbnet_adapter = wwan0
[04-13_03:45:10:768] netcard driver = qmi_wwan_q, driver version = V1.2.0.23
[04-13_03:45:10:769] qmap_mode = 4, qmap_version = 5, qmap_size = 4096, muxid = 0x82, qmap_netcard = wwan0_2
[04-13_03:45:10:769] Modem works in QMI mode
[04-13_03:45:10:771] connect to quectel-qmi-proxy0 sockfd = 7
[04-13_03:45:10:771] cdc_wdm_fd = 7
[04-13_03:45:10:812] Get clientWDS = 21
[04-13_03:45:10:844] Get clientDMS = 2
[04-13_03:45:10:876] Get clientNAS = 5
[04-13_03:45:10:908] Get clientUIM = 2
[04-13_03:45:10:971] requestBaseBandVersion EC25EFAR06A11M4G
[04-13_03:45:11:099] requestGetSIMStatus SIMStatus: SIM_READY
[04-13_03:45:11:099] requestSetProfile[2] 4gnet///0
[04-13_03:45:11:163] requestGetProfile[2] 4gnet///0
[04-13_03:45:11:195] requestRegistrationState2 MCC: 460, MNC: 0, PS: Attached, DataCap: LTE
[04-13_03:45:11:227] requestQueryDataCall IPv4ConnectionStatus: DISCONNECTED
[04-13_03:45:11:227] ifconfig wwan0_2 0.0.0.0
[ 1616.340000] IPv6: ADDRCONF(NETDEV_UP): wwan0_2: link is not ready
[04-13_03:45:11:246] ifconfig wwan0_2 down
[04-13_03:45:11:642] requestSetupDataCall WdsConnectionIPv4Handle: 0x87254580
[ 1616.870000] net wwan0: link_state 0x1 -> 0x3
[04-13_03:45:11:775] ifconfig wwan0 up
[04-13_03:45:11:785] ifconfig wwan0_2 up
[04-13_03:45:11:798] you are use OpenWrt?
[04-13_03:45:11:798] should not calling udhcpc manually?
[04-13_03:45:11:798] should modify /etc/config/network as below?
[04-13_03:45:11:798] config interface wan
[04-13_03:45:11:798] option ifname wwan0_2
[04-13_03:45:11:798] option proto dhcp
[04-13_03:45:11:798] should use "/sbin/ifstaus wan" to check wwan0_2 's status?
[04-13_03:45:11:799] busybox udhcpc -f -n -q -t 5 -i wwan0_2
[04-13_03:45:11:809] udhcpc (v1.23.2) started
[04-13_03:45:11:821] Sending discover...
[04-13_03:45:11:830] Sending select for 10.245.78.212...
[04-13_03:45:11:836] Lease of 10.245.78.212 obtained, lease time 7200
[04-13_03:45:11:842] udhcpc: ifconfig wwan0_2 10.245.78.212 netmask 255.255.255.248 broadcast +
[04-13_03:45:11:852] udhcpc: setting default routers: 10.245.78.213
root@ZhuoTK:/# ifconfig wwan0_1
wwan0_1 Link encap:Ethernet HWaddr DA:0B:CE:B2:DB:21
inet addr:10.244.10.206 Mask:255.255.255.252
inet6 addr: fe80::d80b:ceff:feb2:db21/64 Scope:Link
UP RUNNING NOARP MTU:1500 Metric:1
RX packets:2 errors:0 dropped:0 overruns:0 frame:0
TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:640 (640.0 B) TX bytes:1344 (1.3 KiB)
root@ZhuoTK:/# ifconfig wwan0_2
wwan0_2 Link encap:Ethernet HWaddr DA:0B:CE:B2:DB:21
inet addr:10.245.78.212 Mask:255.255.255.248
inet6 addr: fe80::d80b:ceff:feb2:db21/64 Scope:Link
UP RUNNING NOARP MTU:1500 Metric:1
RX packets:8 errors:0 dropped:0 overruns:0 frame:0
TX packets:7 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1193 (1.1 KiB) TX bytes:1028 (1.0 KiB)
root@ZhuoTK:/# ip ro del 8.8.8.8/32
RTNETLINK answers: No such process
root@ZhuoTK:/# ip ro add 8.8.8.8/32 dev wwan0_1
root@ZhuoTK:/# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: seq=0 ttl=52 time=113.508 ms
root@ZhuoTK:/# ip ro del 8.8.8.8/32
root@ZhuoTK:/# ip ro del 8.8.8.8/32
RTNETLINK answers: No such process
root@ZhuoTK:/# ip ro add 8.8.8.8/32 dev wwan0_2
root@ZhuoTK:/# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: seq=0 ttl=111 time=123.651 ms
root@ZhuoTK:/# quectel-CM -k 2
[04-13_03:46:30:808] Quectel_QConnectManager_Linux_V1.6.0.25
[04-13_03:46:30:811] /proc/2834/cmdline: quectel-CM -n 2 -s 4gnet
[04-13_03:46:30:811] send SIGINT to process 2834
[04-13_03:46:30:811] requestDeactivateDefaultPDP WdsConnectionIPv4Handle
[ 1696.460000] net wwan0: link_state 0x3 -> 0x1
[04-13_03:46:31:361] ifconfig wwan0_2 0.0.0.0
[04-13_03:46:31:373] ifconfig wwan0_2 down
[04-13_03:46:31:516] QmiWwanThread exit
[04-13_03:46:31:516] qmi_main exit
root@ZhuoTK:/# ifconfig wwan0_2
wwan0_2 Link encap:Ethernet HWaddr DA:0B:CE:B2:DB:21
NOARP MTU:1500 Metric:1
RX packets:16 errors:0 dropped:0 overruns:0 frame:0
TX packets:15 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1865 (1.8 KiB) TX bytes:1620 (1.5 KiB)

View File

@ -0,0 +1,132 @@
root@ZhuoTK:/# brctl addbr br0
brctl: bridge br0: File exists
root@ZhuoTK:/# brctl delbr br0
root@ZhuoTK:/# brctl addbr br0
root@ZhuoTK:/# brctl addif br0 eth0.1
root@ZhuoTK:/# insmod qmi_wwan_q.ko qmap_mode=4
[ 365.340000] usbcore: registered new interface driver qmi_wwan_q
[ 380.860000] usb 1-1.3: new high-speed USB device number 4 using ehci-platform
[ 381.100000] qmi_wwan_q 1-1.3:1.4: cdc-wdm0: USB WDM device
[ 381.100000] qmi_wwan_q 1-1.3:1.4: Quectel Android work on RawIP mode
[ 381.120000] qmi_wwan_q 1-1.3:1.4: rx_urb_size = 4096
[ 381.120000] qmi_wwan_q 1-1.3:1.4 wwan0: register 'qmi_wwan_q' at usb-101c0000.ehci-1.3, RMNET/USB device, fa:24:73:b5:39:a8
[ 381.130000] net wwan0: qmap_register_device wwan0_1
[ 381.140000] net wwan0: qmap_register_device wwan0_2
[ 381.150000] net wwan0: qmap_register_device wwan0_3
[ 381.150000] net wwan0: qmap_register_device wwan0_4
root@ZhuoTK:/# brctl addbr br0
root@ZhuoTK:/# brctl addif br0 eth0.1
root@ZhuoTK:/# brctl addif br0 wwan0_2
root@ZhuoTK:/# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.00ca019197b9 no eth0.1
wwan0_2
root@ZhuoTK:/# quectel-qmi-proxy &
[04-13_05:18:10:832] Will use cdc-wdm='/dev/cdc-wdm0', proxy='quectel-qmi-proxy0'
[04-13_05:18:10:833] qmi_proxy_init enter
[04-13_05:18:10:833] qmi_proxy_loop enter thread_id 0x77995530
[04-13_05:18:11:833] qmi_proxy_init succful
[04-13_05:18:11:833] local server: quectel-qmi-proxy0 sockfd = 4
[04-13_05:18:11:833] qmi_proxy_server_fd = 4
root@ZhuoTK:/# quectel-CM -n 2 -s 4gnet -b &
[04-13_05:18:20:144] Quectel_QConnectManager_Linux_V1.6.0.25
[04-13_05:18:20:146] Find /sys/bus/usb/devices/1-1.3 idVendor=0x2c7c idProduct=0x125, bus=0x001, dev=0x004
[04-13_05:18:20:147] Auto find qmichannel = /dev/cdc-wdm0
[04-13_05:18:20:148] Auto find usbnet_adapter = wwan0
[04-13_05:18:20:148] netcard driver = qmi_wwan_q, driver version = V1.2.0.23
[04-13_05:18:20:148] qmap_mode = 4, qmap_version = 5, qmap_size = 4096, muxid = 0x82, qmap_netcard = wwan0_2
[04-13_05:18:20:149] Modem works in QMI mode
[04-13_05:18:20:150] connect to quectel-qmi-proxy0 sockfd = 7
[04-13_05:18:20:150] cdc_wdm_fd = 7
[04-13_05:18:20:370] requestBaseBandVersion EC25EFAR06A11M4G
[04-13_05:18:20:403] qmap_settings.rx_urb_size = 4096
[04-13_05:18:20:404] qmap_settings.ul_data_aggregation_max_datagrams = 11
[04-13_05:18:20:404] qmap_settings.ul_data_aggregation_max_size = 4096
[04-13_05:18:20:404] qmap_settings.dl_minimum_padding = 0
[04-13_05:18:20:530] requestGetSIMStatus SIMStatus: SIM_READY
[04-13_05:18:20:530] requestSetProfile[2] 4gnet///0
[04-13_05:18:20:594] requestGetProfile[2] 4gnet///0
[04-13_05:18:20:626] requestRegistrationState2 MCC: 460, MNC: 0, PS: Attached, DataCap: LTE
[04-13_05:18:20:657] requestQueryDataCall IPv4ConnectionStatus: DISCONNECTED
[04-13_05:18:20:658] ifconfig wwan0_2 0.0.0.0
[04-13_05:18:20:669] ifconfig wwan0_2 down
[04-13_05:18:21:010] requestSetupDataCall WdsConnectionIPv4Handle: 0x87249650
[ 425.100000] net wwan0: link_state 0x1 -> 0x3
[04-13_05:18:21:143] ifconfig wwan0 up
[04-13_05:18:21:156] ifconfig wwan0_2 up
[04-13_05:18:21:168] echo '0xa8ceec7' > /sys/class/net/wwan0_2/bridge_ipv4
root@ZhuoTK:/# ifconfig br0 up
[ 450.520000] br0: port 2(wwan0_2) entered forwarding state
[ 450.520000] br0: port 1(eth0.1) entered forwarding state
[ 450.770000] wwan0_2 PC Mac Address: 00:0e:c6:a6:6c:f1
[ 450.790000] wwan0_2 PC Mac Address: 00:0e:c6:a6:6c:f1
[ 450.840000] wwan0_2 sip = 10.140.238.199, tip=10.140.238.200, ipv4=10.140.238.199
[ 450.950000] wwan0_2 sip = 10.140.238.199, tip=10.140.238.200, ipv4=10.140.238.199
[ 450.950000] wwan0_2 sip = 10.140.238.199, tip=10.140.238.200, ipv4=10.140.238.199
[ 451.120000] wwan0_2 sip = 0.0.0.0, tip=10.140.238.199, ipv4=10.140.238.199
[ 451.180000] wwan0_2 sip = 10.140.238.199, tip=10.140.238.200, ipv4=10.140.238.199
[ 452.120000] wwan0_2 sip = 0.0.0.0, tip=10.140.238.199, ipv4=10.140.238.199
[ 453.080000] wwan0_2 sip = 10.140.238.199, tip=10.140.238.200, ipv4=10.140.238.199
[ 453.120000] wwan0_2 sip = 0.0.0.0, tip=10.140.238.199, ipv4=10.140.238.199
[ 454.120000] wwan0_2 sip = 10.140.238.199, tip=10.140.238.199, ipv4=10.140.238.199
[ 454.220000] wwan0_2 sip = 10.140.238.199, tip=10.140.238.200, ipv4=10.140.238.199
[ 456.200000] wwan0_2 sip = 10.140.238.199, tip=10.140.238.200, ipv4=10.140.238.199
[ 458.120000] wwan0_2 sip = 10.140.238.199, tip=10.140.238.200, ipv4=10.140.238.199
[ 459.240000] wwan0_2 sip = 10.140.238.199, tip=10.140.238.200, ipv4=10.140.238.199
root@ZhuoTK:/# quectel-CM -n 1 -s cmnet &
[04-13_05:19:21:122] Quectel_QConnectManager_Linux_V1.6.0.25
[04-13_05:19:21:125] Find /sys/bus/usb/devices/1-1.3 idVendor=0x2c7c idProduct=0x125, bus=0x001, dev=0x004
[04-13_05:19:21:126] Auto find qmichannel = /dev/cdc-wdm0
[04-13_05:19:21:126] Auto find usbnet_adapter = wwan0
[04-13_05:19:21:127] netcard driver = qmi_wwan_q, driver version = V1.2.0.23
[04-13_05:19:21:127] qmap_mode = 4, qmap_version = 5, qmap_size = 4096, muxid = 0x81, qmap_netcard = wwan0_1
[04-13_05:19:21:127] Modem works in QMI mode
[04-13_05:19:21:128] connect to quectel-qmi-proxy0 sockfd = 7
[04-13_05:19:21:129] cdc_wdm_fd = 7
[04-13_05:19:21:331] requestBaseBandVersion EC25EFAR06A11M4G
[04-13_05:19:21:459] requestGetSIMStatus SIMStatus: SIM_READY
[04-13_05:19:21:459] requestSetProfile[1] cmnet///0
[04-13_05:19:21:522] requestGetProfile[1] cmnet///0
[04-13_05:19:21:554] requestRegistrationState2 MCC: 460, MNC: 0, PS: Attached, DataCap: LTE
[04-13_05:19:21:585] requestQueryDataCall IPv4ConnectionStatus: DISCONNECTED
[ 485.550000] net wwan0: link_state 0x3 -> 0x2
[04-13_05:19:21:592] ifconfig wwan0_1 0.0.0.0
[ 485.570000] IPv6: ADDRCONF(NETDEV_UP): wwan0_1: link is not ready
[04-13_05:19:21:610] ifconfig wwan0_1 down
[04-13_05:19:21:682] requestSetupDataCall WdsConnectionIPv4Handle: 0x8725ed70
[ 485.780000] net wwan0: link_state 0x2 -> 0x3
[04-13_05:19:21:815] ifconfig wwan0 up
[04-13_05:19:21:826] ifconfig wwan0_1 up
[04-13_05:19:21:845] you are use OpenWrt?
[04-13_05:19:21:845] should not calling udhcpc manually?
[04-13_05:19:21:845] should modify /etc/config/network as below?
[04-13_05:19:21:845] config interface wan
[04-13_05:19:21:845] option ifname wwan0_1
[04-13_05:19:21:845] option proto dhcp
[04-13_05:19:21:845] should use "/sbin/ifstaus wan" to check wwan0_1 's status?
[04-13_05:19:21:846] busybox udhcpc -f -n -q -t 5 -i wwan0_1
[04-13_05:19:21:863] udhcpc (v1.23.2) started
[04-13_05:19:21:923] Sending discover...
[04-13_05:19:21:927] Sending select for 10.141.146.55...
[04-13_05:19:21:932] Lease of 10.141.146.55 obtained, lease time 7200
[04-13_05:19:21:938] udhcpc: ifconfig wwan0_1 10.141.146.55 netmask 255.255.255.240 broadcast +
[04-13_05:19:21:949] udhcpc: setting default routers: 10.141.146.56
root@ZhuoTK:/# ip ro show
default via 10.141.146.56 dev wwan0_1
10.141.146.48/28 dev wwan0_1 proto kernel scope link src 10.141.146.55
192.168.1.0/24 dev br-lan proto kernel scope link src 192.168.1.251
root@ZhuoTK:/# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: seq=0 ttl=111 time=86.006 ms
64 bytes from 8.8.8.8: seq=1 ttl=111 time=74.763 ms
64 bytes from 8.8.8.8: seq=2 ttl=111 time=85.501 ms
64 bytes from 8.8.8.8: seq=3 ttl=111 time=74.231 ms

View File

@ -0,0 +1,55 @@
# dmesg
[ 1737.738025] usb 1-1.2: new high-speed USB device number 5 using xhci-hcd
[ 1737.838917] usb 1-1.2: New USB device found, idVendor=2c7c, idProduct=0512, bcdDevice= 3.18
[ 1737.838948] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 1737.838963] usb 1-1.2: Product: EG12-EA
[ 1737.838975] usb 1-1.2: Manufacturer: Quectel
[ 1737.838986] usb 1-1.2: SerialNumber: 0123456789ABCDE
[ 1737.994955] option 1-1.2:1.0: GSM modem (1-port) converter detected
[ 1737.995430] usb 1-1.2: GSM modem (1-port) converter now attached to ttyUSB0
[ 1737.995978] option 1-1.2:1.1: GSM modem (1-port) converter detected
[ 1737.996409] usb 1-1.2: GSM modem (1-port) converter now attached to ttyUSB1
[ 1737.996963] option 1-1.2:1.2: GSM modem (1-port) converter detected
[ 1737.997351] usb 1-1.2: GSM modem (1-port) converter now attached to ttyUSB2
[ 1737.997909] option 1-1.2:1.3: GSM modem (1-port) converter detected
[ 1737.998976] usb 1-1.2: GSM modem (1-port) converter now attached to ttyUSB3
[ 1825.835796] qmi_wwan 1-1.2:1.4: cdc-wdm0: USB WDM device
[ 1825.839685] qmi_wwan 1-1.2:1.4 wwan0: register 'qmi_wwan' at usb-fe9c0000.xhci-1.2, WWAN/QMI device, 0e:80:14:b1:f6:b9
[ 1825.840062] usbcore: registered new interface driver qmi_wwan
# ifconfig wwan0 down
# echo Y > /sys/class/net/wwan0/qmi/raw_ip
# echo 1 > /sys/class/net/wwan0/qmi/add_mux
# ifconfig qmimux0
qmimux0: flags=4240<POINTOPOINT,NOARP,MULTICAST> mtu 1500
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 1000 (UNSPEC)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
# echo 2 > /sys/class/net/wwan0/qmi/add_mux
# echo 3 > /sys/class/net/wwan0/qmi/add_mux
# echo 4 > /sys/class/net/wwan0/qmi/add_mux
# ifconfig qmimux3
qmimux3: flags=4240<POINTOPOINT,NOARP,MULTICAST> mtu 1500
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 1000 (UNSPEC)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
set wwan0's mtu to max qmap packet size, for usbnet.c:usbnet_change_mtu() do not accept
# ifconfig wwan0 mtu 16385
run qmi proxy programm,
# quectel-CM/quectel-qmi-proxy -d /dev/cdc-wdm0
or libqmi's qmi-proxy, if use libqmi's qmi-proxy, you can use qmicli to setup data call.
# /usr/libexec/qmi-proxy --verbose --no-exit
use quectel-CM to setup data call, if use libqmi's qmi-proxy, use '-p qmi-proxy' instead of '-p quectel-qmi-proxy'
# quectel-CM -p quectel-qmi-proxy -n 4 -s cmnet4
# quectel-CM -p quectel-qmi-proxy -n 1 -s cmnet
for how to use libqmi to setup data call, please refer to https://knowledge.quectel.com/display/SWSYSTLinuxAndroid/libqmi_How+to+using+QMAP+multiplexing

View File

@ -0,0 +1,68 @@
root@OpenWrt:~# quectel-CM -s cmnet -4 -6
[04-14_06:56:51:778] Quectel_QConnectManager_Linux_V1.6.0.25
[04-14_06:56:51:779] network interface '' or qmidev '' is not exist
[04-14_06:56:51:780] netcard driver = pcie_mhi, driver version = V1.3.0.17
[04-14_06:56:51:781] qmap_mode = 4, qmap_version = 9, qmap_size = 16384, muxid = 0x81, qmap_netcard = rmnet_mhi0.1
[04-14_06:56:51:782] Modem works in QMI mode
[04-14_06:56:51:783] connect to quectel-qmi-proxy0 sockfd = 7
[04-14_06:56:51:783] cdc_wdm_fd = 7
[04-14_06:56:51:789] Get clientWDS = 15
[04-14_06:56:51:792] Get clientWDS = 16
[04-14_06:56:51:794] Get clientDMS = 3
[04-14_06:56:51:798] Get clientNAS = 4
[04-14_06:56:51:801] Get clientUIM = 1
[04-14_06:56:51:805] Get clientWDA = 1
[04-14_06:56:51:809] requestBaseBandVersion RM500QGLABR10A03M4G
[04-14_06:56:51:813] qmap_settings.rx_urb_size = 16384
[04-14_06:56:51:813] qmap_settings.ul_data_aggregation_max_datagrams = 11
[04-14_06:56:51:814] qmap_settings.ul_data_aggregation_max_size = 8192
[04-14_06:56:51:814] qmap_settings.dl_minimum_padding = 0
[04-14_06:56:51:835] requestGetSIMStatus SIMStatus: SIM_READY
[04-14_06:56:51:836] requestSetProfile[1] cmnet///0
[04-14_06:56:51:848] requestGetProfile[1] cmnet///0
[04-14_06:56:51:852] requestRegistrationState2 MCC: 460, MNC: 0, PS: Attached, DataCap: 5G_NSA
[04-14_06:56:51:857] requestQueryDataCall IPv4ConnectionStatus: DISCONNECTED
[04-14_06:56:51:860] requestQueryDataCall IPv6ConnectionStatus: DISCONNECTED
[04-14_06:56:51:861] ifconfig rmnet_mhi0 down
[04-14_06:56:51:885] ifconfig rmnet_mhi0.1 0.0.0.0
ifconfig: SIOCSIFFLAGS: Network is down
[04-14_06:56:51:909] ifconfig rmnet_mhi0.1 down
[04-14_06:56:51:943] requestSetupDataCall WdsConnectionIPv4Handle: 0x341450a0
[04-14_06:56:52:423] requestSetupDataCall WdsConnectionIPv6Handle: 0x341439f0
[ 1001.561353] net rmnet_mhi0: link_state 0x0 -> 0x1
[04-14_06:56:52:441] ifconfig rmnet_mhi0 up
[ 1001.584623] [I][mhi_netdev_open] Opened net dev interface
[04-14_06:56:52:467] ifconfig rmnet_mhi0.1 up
[04-14_06:56:52:495] you are use OpenWrt?
[04-14_06:56:52:496] should not calling udhcpc manually?
[04-14_06:56:52:496] should modify /etc/config/network as below?
[04-14_06:56:52:497] config interface wan
[04-14_06:56:52:497] option ifname rmnet_mhi0.1
[04-14_06:56:52:497] option proto dhcp
[04-14_06:56:52:498] should use "/sbin/ifstaus wan" to check rmnet_mhi0.1 's status?
[04-14_06:56:52:498] busybox udhcpc -f -n -q -t 5 -i rmnet_mhi0.1
udhcpc: started, v1.28.3
udhcpc: sending discover
udhcpc: sending select for 10.245.22.3
udhcpc: lease of 10.245.22.3 obtained, lease time 7200
[04-14_06:56:52:713] udhcpc: ifconfig rmnet_mhi0.1 10.245.22.3 netmask 255.255.255.248 broadcast +
[04-14_06:56:52:754] udhcpc: setting default routers: 10.245.22.4
[04-14_06:56:52:838] ip -6 address flush dev rmnet_mhi0.1
[04-14_06:56:52:861] ip -6 address add 2409:8930:463:3daa:7c8e:429a:c902:c6cc/64 dev rmnet_mhi0.1
[04-14_06:56:52:884] ip -6 route add default dev rmnet_mhi0.1
root@OpenWrt:~# cat /etc/resolv.conf
nameserver 2409:8030:2000:0:0:0:0:1 # IPV6 rmnet_mhi0.1
nameserver 2409:8030:2000:0:0:0:0:2 # IPV6 rmnet_mhi0.1
search lan
nameserver 127.0.0.1
root@OpenWrt:~# ip -6 ro show
2409:8930:463:96df::/64 dev rmnet_mhi0.1 proto kernel metric 256
fe80::/64 dev br-lan proto kernel metric 256
fe80::/64 dev br0 proto kernel metric 256
default dev rmnet_mhi0.1 metric 1024
root@OpenWrt:~# ping6 www.qq.com
PING www.qq.com (2402:4e00:1430:1301::9227:79cc:76f2): 56 data bytes
64 bytes from 2402:4e00:1430:1301::9227:79cc:76f2: seq=0 ttl=51 time=97.230 ms

View File

@ -0,0 +1,58 @@
root@ZhuoTK:/# quectel-CM -n 1 -m 4 -s cmnet &
[04-13_05:12:07:455] Quectel_QConnectManager_Linux_V1.6.0.25
[04-13_05:12:07:458] Find /sys/bus/usb/devices/1-1.3 idVendor=0x2c7c idProduct=0x125, bus=0x001, dev=0x003
[04-13_05:12:07:459] Auto find qmichannel = /dev/qcqmi0
[04-13_05:12:07:459] Auto find usbnet_adapter = usb0
[04-13_05:12:07:467] netcard driver = GobiNet, driver version = V1.6.2.13
[04-13_05:12:07:467] qmap_mode = 4, qmap_version = 5, qmap_size = 4096, muxid = 0x84, qmap_netcard = usb0.4
[04-13_05:12:07:467] Modem works in QMI mode
[04-13_05:12:07:495] Get clientWDS = 7
[04-13_05:12:07:529] Get clientDMS = 8
[04-13_05:12:07:561] Get clientNAS = 9
[04-13_05:12:07:591] Get clientUIM = 10
[04-13_05:12:07:623] requestBaseBandVersion EC25EFAR06A11M4G
[04-13_05:12:07:752] requestGetSIMStatus SIMStatus: SIM_READY
[04-13_05:12:07:752] requestSetProfile[1] cmnet///0
[04-13_05:12:07:817] requestGetProfile[1] cmnet///0
[04-13_05:12:07:849] requestRegistrationState2 MCC: 460, MNC: 0, PS: Attached, DataCap: LTE
[04-13_05:12:07:881] requestQueryDataCall IPv4ConnectionStatus: DISCONNECTED
[04-13_05:12:07:881] ifconfig usb0 down
[04-13_05:12:07:892] ifconfig usb0.4 0.0.0.0
[04-13_05:12:07:903] ifconfig usb0.4 down
[04-13_05:12:07:944] requestSetupDataCall WdsConnectionIPv4Handle: 0x87265c40
[ 52.020000] net usb0: link_state 0x0 -> 0x8
[04-13_05:12:08:077] ifconfig usb0 up
[04-13_05:12:08:096] ifconfig usb0.4 up
[04-13_05:12:08:116] you are use OpenWrt?
[04-13_05:12:08:116] should not calling udhcpc manually?
[04-13_05:12:08:116] should modify /etc/config/network as below?
[04-13_05:12:08:116] config interface wan
[04-13_05:12:08:116] option ifname usb0.4
[04-13_05:12:08:116] option proto dhcp
[04-13_05:12:08:116] should use "/sbin/ifstaus wan" to check usb0.4 's status?
[04-13_05:12:08:117] busybox udhcpc -f -n -q -t 5 -i usb0.4
[04-13_05:12:08:134] udhcpc (v1.23.2) started
[04-13_05:12:08:193] Sending discover...
[04-13_05:12:08:197] Sending select for 10.84.241.180...
[04-13_05:12:08:203] Lease of 10.84.241.180 obtained, lease time 7200
[04-13_05:12:08:208] udhcpc: ifconfig usb0.4 10.84.241.180 netmask 255.255.255.248 broadcast +
[04-13_05:12:08:221] udhcpc: setting default routers: 10.84.241.181
root@ZhuoTK:/# ifconfig usb0.4
usb0.4 Link encap:Ethernet HWaddr 02:50:F4:00:00:00
inet addr:10.84.241.180 Mask:255.255.255.248
inet6 addr: fe80::50:f4ff:fe00:0/64 Scope:Link
UP RUNNING NOARP MTU:1500 Metric:1
RX packets:2 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:612 (612.0 B) TX bytes:984 (984.0 B)
root@ZhuoTK:/# ip ro show
default via 10.84.241.181 dev usb0.4
10.84.241.176/29 dev usb0.4 proto kernel scope link src 10.84.241.180
192.168.1.0/24 dev br-lan proto kernel scope link src 192.168.1.251
root@ZhuoTK:/# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: seq=0 ttl=52 time=99.431 ms

View File

@ -1,39 +0,0 @@
include $(TOPDIR)/rules.mk
PKG_NAME:= quectel-CM-5G
PKG_VERSION:=1.6.5
PKG_RELEASE:=1
include $(INCLUDE_DIR)/package.mk
define Package/quectel-CM-5G
SECTION:=utils
CATEGORY:=Utilities
TITLE:=quectel-CM-5G app
endef
define Build/Prepare
mkdir -p $(PKG_BUILD_DIR)
$(CP) ./src/* $(PKG_BUILD_DIR)/
endef
define Build/Compile
$(MAKE) -C "$(PKG_BUILD_DIR)" \
EXTRA_CFLAGS="$(EXTRA_CFLAGS)" \
CROSS_COMPILE="$(TARGET_CROSS)" \
ARCH="$(LINUX_KARCH)" \
M="$(PKG_BUILD_DIR)" \
CC="$(TARGET_CC)"
endef
define Package/quectel-CM-5G/install
$(INSTALL_DIR) $(1)/usr/bin $(1)/lib/netifd/proto
$(INSTALL_BIN) $(PKG_BUILD_DIR)/quectel-CM $(1)/usr/bin
$(INSTALL_BIN) ./files/rmnet_init.sh $(1)/lib/netifd
$(INSTALL_BIN) ./files/rmnet.script $(1)/lib/netifd
$(INSTALL_BIN) ./files/rmnet.sh $(1)/lib/netifd/proto
$(INSTALL_BIN) ./files/rmnet6.sh $(1)/lib/netifd/proto
$(INSTALL_BIN) ./files/rmnet6.script $(1)/lib/netifd
endef
$(eval $(call BuildPackage,quectel-CM-5G))

View File

@ -1,48 +0,0 @@
config dnsmasq
option domainneeded '1'
option boguspriv '1'
option filterwin2k '0'
option localise_queries '1'
option rebind_protection '1'
option rebind_localhost '1'
option local '/lan/'
option domain 'lan'
option expandhosts '1'
option nonegcache '0'
option authoritative '1'
option readethers '1'
option leasefile '/tmp/dhcp.leases'
option resolvfile '/tmp/resolv.conf.auto'
option nonwildcard '1'
option localservice '1'
config dhcp 'lan'
option interface 'lan'
option start '100'
option limit '150'
option leasetime '12h'
option ra 'relay'
option dhcpv6 'disabled'
option ndp 'relay'
config dhcp 'wan'
option interface 'wan'
option ignore '1'
option ra 'relay'
option dhcpv6 'disabled'
option ndp 'relay'
option ndproxy_routing '0'
option master '1'
config dhcp 'wan6'
option ra 'relay'
option dhcpv6 'disabled'
option ndp 'relay'
option ndproxy_routing '0'
option master '1'
option interface 'wan6'
config odhcpd 'odhcpd'
option loglevel '7'

View File

@ -1,66 +0,0 @@
#!/bin/sh
# Copyright (c) 2019 Qualcomm Technologies, Inc.
# All Rights Reserved.
# Confidential and Proprietary - Qualcomm Technologies, Inc.
[ -z "$1" ] && echo "Error: should be run by rmnet" && exit 1
[ -z "$2" ] && echo "Error: should be run by rmnet" && exit 1
. /lib/functions.sh
. /lib/functions/network.sh
. /lib/netifd/netifd-proto.sh
setup_interface() {
INTERFACE=$1
CONFIG=/tmp/rmnet_$2_ipv4config
logger "rmnet setup_interface $1 $2 here"
#Fetch information from lower.
[ -f ${CONFIG} ] || {
proto_notify_error "$INTERFACE" "RMNET data call Not ready"
proto_block_restart "$INTERFACE"
return
}
. ${CONFIG}
ip=$PUBLIC_IP
DNS=$DNSSERVERS
router=$GATEWAY
subnet=$NETMASK
interface=$IFNAME
#Send the information to the netifd
proto_init_update "$interface" 1 1
#ip and subnet
proto_add_ipv4_address "$ip" "${subnet:-255.255.255.0}"
#Any router? if not, remove below scripts
#router format should be separated by space
for i in $router; do
proto_add_ipv4_route "$i" 32 "" "$ip"
proto_add_ipv4_route 0.0.0.0 0 "$i" "$ip"
done
#dns information tell the netifd.
for dns in $DNS; do
proto_add_dns_server "$dns"
done
#Domain information tell the netifd
for domain in $domain; do
proto_add_dns_search "$domain"
done
#proto_add_data
[ -n "$ZONE" ] && json_add_string zone "$ZONE"
proto_close_data
proto_send_update "$INTERFACE"
}
case "$1" in
renew)
setup_interface $2 $3
;;
esac
exit 0

View File

@ -1,32 +0,0 @@
#!/bin/sh
# Copyright (c) 2019 Qualcomm Technologies, Inc.
# All Rights Reserved.
# Confidential and Proprietary - Qualcomm Technologies, Inc.
. /lib/functions.sh
. /lib/functions/network.sh
. ../netifd-proto.sh
init_proto "$@"
proto_rmnet_setup() {
local cfg="$1"
local iface="$2"
logger "rmnet started"
#Call rmnet management script below!!
logger "rmnet updated ${cfg} ${iface}"
/lib/netifd/rmnet.script renew $cfg $iface
}
proto_rmnet_teardown() {
local cfg="$1"
#Tear down rmnet manager script here.*/
}
proto_rmnet_init_config() {
#ddno_device=1
available=1
}
add_protocol rmnet

View File

@ -1,61 +0,0 @@
#!/bin/sh
# Copyright (c) 2019 Qualcomm Technologies, Inc.
# All Rights Reserved.
# Confidential and Proprietary - Qualcomm Technologies, Inc.
[ -z "$1" ] && echo "Error: should be run by rmnet" && exit 1
[ -z "$2" ] && echo "Error: should be run by rmnet" && exit 1
. /lib/functions.sh
. /lib/functions/network.sh
. /lib/netifd/netifd-proto.sh
setup_interface() {
INTERFACE=$1
CONFIG=/tmp/rmnet_$2_ipv6config
logger "rmnet setup_interface $1 $2 here"
#Fetch information from lower.
[ -f ${CONFIG} ] || {
proto_notify_error "$INTERFACE" "RMNET data call NOT ready"
proto_block_restart "$INTERFACE"
return
}
. ${CONFIG}
ADDRESSES=$PUBLIC_IP
interface=$IFNAME
#Send the information to the netifd
proto_init_update "$interface" 1 1
#ip and subnet
proto_add_ipv6_address "${PUBLIC_IP}" "128"
proto_add_ipv6_prefix "${PUBLIC_IP}/${PrefixLength}"
#router format should be separated by space
proto_add_ipv6_route "$GATEWAY" 128
proto_add_ipv6_route "::0" 0 "$GATEWAY" "" "" "${PUBLIC_IP}/${PrefixLength}"
#dns information tell the netifd.
for dns in $DNSSERVERS; do
proto_add_dns_server "$dns"
done
#Domain information tell the netifd
for domain in $domain; do
proto_add_dns_search "$domain"
done
#proto_add_data
[ -n "$ZONE" ] && json_add_string zone "$ZONE"
proto_close_data
proto_send_update "$INTERFACE"
}
case "$1" in
renew|bound)
setup_interface $2 $3
;;
esac
exit 0

View File

@ -1,32 +0,0 @@
#!/bin/sh
# Copyright (c) 2019 Qualcomm Technologies, Inc.
# All Rights Reserved.
# Confidential and Proprietary - Qualcomm Technologies, Inc.
. /lib/functions.sh
. /lib/functions/network.sh
. ../netifd-proto.sh
init_proto "$@"
proto_rmnet6_setup() {
local cfg="$1"
local iface="$2"
logger "rmnet6 started"
#Call rmnet management script below!!
/lib/netifd/rmnet6.script renew $cfg $iface
logger "rmnet6 updated"
}
proto_rmnet6_teardown() {
local cfg="$1"
#Tear down rmnet manager script here.*/
}
proto_rmnet6_init_config() {
#ddno_device=1
available=1
}
add_protocol rmnet6

View File

@ -1,31 +0,0 @@
#!/bin/sh
uci set network.wan='interface'
uci set network.wan.ifname='wwan0'
uci set network.wan.proto='rmnet'
uci set network.wan6='interface'
uci set network.wan6.ifname='wwan0'
uci set network.wan6.proto='rmnet6'
uci set dhcp.lan.ra='relay'
uci set dhcp.lan.dhcpv6='disabled'
uci set dhcp.lan.ndp='relay'
uci set dhcp.wan.ra='relay'
uci set dhcp.wan.dhcpv6='disabled'
uci set dhcp.wan.ndp='relay'
uci set dhcp.wan.ndproxy_routing='0'
uci set dhcp.wan6=dhcp
uci set dhcp.wan6.interface='wan6'
uci set dhcp.wan6.ra='relay'
uci set dhcp.wan6.dhcpv6='disabled'
uci set dhcp.wan6.ndp='relay'
uci set dhcp.wan6.ndproxy_routing='0'
uci set dhcp.wan6.master='1'
uci set dhcp.odhcpd=odhcpd
uci set dhcp.odhcpd.loglevel='7'
uci commit

View File

@ -25,7 +25,7 @@
/* This driver supports wwan (3G/LTE/?) devices using a vendor
* specific management protocol called Qualcomm MSM Interface (QMI) -
@@ -828,26 +826,25 @@ static struct rtnl_link_stats64 *_rmnet_
@@ -846,12 +846,20 @@ static struct rtnl_link_stats64 *_rmnet_
stats64 = per_cpu_ptr(dev->stats64, cpu);
do {

View File

@ -59,13 +59,15 @@ struct rmnet_nss_cb {
int (*nss_tx)(struct sk_buff *skb);
};
static struct rmnet_nss_cb __read_mostly *nss_cb = NULL;
#if defined(CONFIG_PINCTRL_IPQ807x) || defined(CONFIG_PINCTRL_IPQ5018)
#ifdef CONFIG_RMNET_DATA
#if defined(CONFIG_PINCTRL_IPQ807x) || defined(CONFIG_PINCTRL_IPQ5018) || defined(CONFIG_PINCTRL_IPQ8074)
//#ifdef CONFIG_RMNET_DATA //spf12.x none, not effect for spf11.x
#define CONFIG_QCA_NSS_DRV
/* define at qsdk/qca/src/linux-4.4/net/rmnet_data/rmnet_data_main.c */
/* define at qsdk/qca/src/linux-4.4/net/rmnet_data/rmnet_data_main.c */ //for spf11.x
/* define at qsdk/qca/src/datarmnet/core/rmnet_config.c */ //for spf12.x
/* set at qsdk/qca/src/data-kernel/drivers/rmnet-nss/rmnet_nss.c */
/* need add DEPENDS:= kmod-rmnet-core in feeds/makefile */
extern struct rmnet_nss_cb *rmnet_nss_callbacks __rcu __read_mostly;
#endif
//#endif
#endif
/* This driver supports wwan (3G/LTE/?) devices using a vendor
@ -91,7 +93,7 @@ extern struct rmnet_nss_cb *rmnet_nss_callbacks __rcu __read_mostly;
* These devices may alternatively/additionally be configured using AT
* commands on a serial interface
*/
#define VERSION_NUMBER "V1.2.2"
#define VERSION_NUMBER "V1.2.6"
#define QUECTEL_WWAN_VERSION "Quectel_Linux&Android_QMI_WWAN_Driver_"VERSION_NUMBER
static const char driver_name[] = "qmi_wwan_q";
@ -115,6 +117,7 @@ static const u8 default_modem_addr[ETH_ALEN] = {0x02, 0x50, 0xf3};
1 - QMAP (Aggregation protocol)
X - QMAP (Multiplexing and Aggregation protocol)
*/
//#define CONFIG_CLEAR_HALT
#define QUECTEL_WWAN_QMAP 4 //MAX is 7
#if defined(QUECTEL_WWAN_QMAP)
@ -319,10 +322,10 @@ static int bridge_arp_reply(struct net_device *net, struct sk_buff *skb, uint br
reply->ip_summed = CHECKSUM_UNNECESSARY;
reply->pkt_type = PACKET_HOST;
#if LINUX_VERSION_CODE < KERNEL_VERSION(5,18,0)
netif_rx_ni(reply);
#else
#if (LINUX_VERSION_CODE >= KERNEL_VERSION( 5,18,0 ))
netif_rx(reply);
#else
netif_rx_ni(reply);
#endif
}
return 1;
@ -387,11 +390,7 @@ static struct sk_buff *bridge_mode_tx_fixup(struct net_device *net, struct sk_bu
__skb_pull(reply, skb_network_offset(reply));
reply->ip_summed = CHECKSUM_UNNECESSARY;
reply->pkt_type = PACKET_HOST;
#if LINUX_VERSION_CODE < KERNEL_VERSION(5,18,0)
netif_rx_ni(reply);
#else
netif_rx(reply);
#endif
return NULL;
}
#endif
@ -693,7 +692,7 @@ static void qmap_wake_queue(sQmiWwanQmap *pQmapDev)
}
}
static struct sk_buff * add_qhdr(struct sk_buff *skb, u8 mux_id) {
static struct sk_buff * add_qhdr(struct sk_buff *skb, u8 mux_id, int *hdr_data, int ip_offset) {
struct qmap_hdr *qhdr;
int pad = 0;
@ -701,44 +700,55 @@ static struct sk_buff * add_qhdr(struct sk_buff *skb, u8 mux_id) {
if (pad) {
pad = 4 - pad;
if (skb_tailroom(skb) < pad) {
printk("skb_tailroom small!\n");
//printk("skb_tailroom small!\n");
pad = 0;
}
if (pad)
__skb_put(skb, pad);
}
qhdr = (struct qmap_hdr *)skb_push(skb, sizeof(struct qmap_hdr));
if (hdr_data) {
qhdr = (struct qmap_hdr *)hdr_data;
qhdr->pkt_len = cpu_to_be16(skb->len - ip_offset);
}
else {
qhdr = (struct qmap_hdr *)skb_push(skb, sizeof(struct qmap_hdr));
qhdr->pkt_len = cpu_to_be16(skb->len - sizeof(struct qmap_hdr));
}
qhdr->cd_rsvd_pad = pad;
qhdr->mux_id = mux_id;
qhdr->pkt_len = cpu_to_be16(skb->len - sizeof(struct qmap_hdr));
return skb;
}
static struct sk_buff * add_qhdr_v5(struct sk_buff *skb, u8 mux_id) {
static struct sk_buff * add_qhdr_v5(struct sk_buff *skb, u8 mux_id, int *hdr_data, int ip_offset) {
struct rmnet_map_header *map_header;
struct rmnet_map_v5_csum_header *ul_header;
u32 padding, map_datalen;
int pad = 0;
map_datalen = skb->len;
padding = map_datalen%4;
if (padding) {
padding = 4 - padding;
if (skb_tailroom(skb) < padding) {
printk("skb_tailroom small!\n");
padding = 0;
pad = (skb->len - ip_offset) %4;
if (pad) {
pad = 4 - pad;
if (skb_tailroom(skb) < pad) {
//printk("skb_tailroom small!\n");
pad = 0;
}
if (padding)
__skb_put(skb, padding);
if (pad)
__skb_put(skb, pad);
}
map_header = (struct rmnet_map_header *)skb_push(skb, (sizeof(struct rmnet_map_header) + sizeof(struct rmnet_map_v5_csum_header)));
if (hdr_data) {
map_header = (struct rmnet_map_header *)hdr_data;
map_header->pkt_len = htons(skb->len - ip_offset);
}
else {
map_header = (struct rmnet_map_header *)skb_push(skb, (sizeof(struct rmnet_map_header) + sizeof(struct rmnet_map_v5_csum_header)));
map_header->pkt_len = htons(skb->len - (sizeof(struct rmnet_map_header) + sizeof(struct rmnet_map_v5_csum_header)));
}
map_header->cd_bit = 0;
map_header->next_hdr = 1;
map_header->pad_len = padding;
map_header->pad_len = pad;
map_header->mux_id = mux_id;
map_header->pkt_len = htons(map_datalen + padding);
ul_header = (struct rmnet_map_v5_csum_header *)(map_header + 1);
memset(ul_header, 0, sizeof(*ul_header));
@ -761,22 +771,17 @@ static void rmnet_vnd_update_rx_stats(struct net_device *net,
struct pcpu_sw_netstats *stats64 = this_cpu_ptr(dev->stats64);
u64_stats_update_begin(&stats64->syncp);
#if LINUX_VERSION_CODE < KERNEL_VERSION(5,18,0)
#if (LINUX_VERSION_CODE < KERNEL_VERSION( 6,0,0 ))
stats64->rx_packets += rx_packets;
stats64->rx_bytes += rx_bytes;
#else
u64_stats_add(&stats64->rx_packets, rx_packets);
u64_stats_add(&stats64->rx_bytes, rx_bytes);
u64_stats_add(&stats64->rx_packets, rx_packets);
u64_stats_add(&stats64->rx_bytes, rx_bytes);
#endif
u64_stats_update_end(&stats64->syncp);
#else
#if LINUX_VERSION_CODE < KERNEL_VERSION(5,18,0)
net->stats.rx_packets += rx_packets;
net->stats.rx_bytes += rx_bytes;
#else
u64_stats_add(&net->stats.rx_packets, rx_packets);
u64_stats_add(&net->stats.rx_bytes, rx_bytes);
#endif
#endif
}
@ -787,22 +792,17 @@ static void rmnet_vnd_update_tx_stats(struct net_device *net,
struct pcpu_sw_netstats *stats64 = this_cpu_ptr(dev->stats64);
u64_stats_update_begin(&stats64->syncp);
#if LINUX_VERSION_CODE < KERNEL_VERSION(5,18,0)
#if (LINUX_VERSION_CODE < KERNEL_VERSION( 6,0,0 ))
stats64->tx_packets += tx_packets;
stats64->tx_bytes += tx_bytes;
#else
u64_stats_add(&stats64->tx_packets, tx_packets);
u64_stats_add(&stats64->tx_bytes, tx_bytes);
u64_stats_add(&stats64->tx_packets, tx_packets);
u64_stats_add(&stats64->tx_bytes, tx_bytes);
#endif
u64_stats_update_end(&stats64->syncp);
#else
#if LINUX_VERSION_CODE < KERNEL_VERSION(5,18,0)
net->stats.tx_packets += tx_packets;
net->stats.tx_bytes += tx_bytes;
#else
u64_stats_add(&net->stats.tx_packets, tx_packets);
u64_stats_add(&net->tx_bytes, tx_bytes);
#endif
#endif
}
@ -822,26 +822,37 @@ static struct rtnl_link_stats64 *_rmnet_vnd_get_stats64(struct net_device *net,
for_each_possible_cpu(cpu) {
struct pcpu_sw_netstats *stats64;
#if (LINUX_VERSION_CODE < KERNEL_VERSION( 6,1,0 ))
u64 rx_packets, rx_bytes;
u64 tx_packets, tx_bytes;
stats64 = per_cpu_ptr(dev->stats64, cpu);
do {
#if (LINUX_VERSION_CODE < KERNEL_VERSION( 6,6,0 ))
start = u64_stats_fetch_begin_irq(&stats64->syncp);
#else
start = u64_stats_fetch_begin(&stats64->syncp);
#endif
rx_packets = stats64->rx_packets;
rx_bytes = stats64->rx_bytes;
tx_packets = stats64->tx_packets;
tx_bytes = stats64->tx_bytes;
#if (LINUX_VERSION_CODE < KERNEL_VERSION( 6,6,0 ))
} while (u64_stats_fetch_retry_irq(&stats64->syncp, start));
stats->rx_packets += rx_packets;
stats->rx_bytes += rx_bytes;
stats->tx_packets += tx_packets;
stats->tx_bytes += tx_bytes;
#else
} while (u64_stats_fetch_retry(&stats64->syncp, start));
#endif
u64_stats_t rx_packets, rx_bytes;
u64_stats_t tx_packets, tx_bytes;
stats64 = per_cpu_ptr(dev->stats64, cpu);
do {
start = u64_stats_fetch_begin_irq(&stats64->syncp);
rx_packets = stats64->rx_packets;
rx_bytes = stats64->rx_bytes;
tx_packets = stats64->tx_packets;
tx_bytes = stats64->tx_bytes;
} while (u64_stats_fetch_retry_irq(&stats64->syncp, start));
stats->rx_packets += u64_stats_read(&rx_packets);
stats->rx_bytes += u64_stats_read(&rx_bytes);
@ -998,7 +1009,7 @@ static long agg_bypass_time __read_mostly = 10000000L;
module_param(agg_bypass_time, long, S_IRUGO | S_IWUSR);
MODULE_PARM_DESC(agg_bypass_time, "Skip agg when apart spaced more than this");
static int rmnet_usb_tx_agg(struct sk_buff *skb, struct qmap_priv *priv) {
static int rmnet_usb_tx_agg(struct sk_buff *skb, struct qmap_priv *priv, int *hdr_data, int hdr_len, int ip_offset) {
struct qmi_wwan_state *info = (void *)&priv->dev->data;
sQmiWwanQmap *pQmapDev = (sQmiWwanQmap *)info->unused;
struct tx_agg_ctx *ctx = &pQmapDev->tx_ctx;
@ -1021,15 +1032,22 @@ static int rmnet_usb_tx_agg(struct sk_buff *skb, struct qmap_priv *priv) {
rmnet_vnd_update_tx_stats(pNet, 1, skb->len);
if (ctx->ul_data_aggregation_max_datagrams == 1) {
skb->protocol = htons(ETH_P_MAP);
skb->dev = priv->real_dev;
agg_skb = alloc_skb(skb->len + hdr_len, GFP_ATOMIC);
if (agg_skb) {
memcpy(skb_put(agg_skb, hdr_len), hdr_data, hdr_len);
memcpy(skb_put(agg_skb, skb->len - ip_offset), skb->data + ip_offset, skb->len - ip_offset);
agg_skb->protocol = htons(ETH_P_MAP);
agg_skb->dev = priv->real_dev;
#if 0
if (!skb->destructor)
skb->destructor = rmnet_usb_tx_skb_destructor;
if (!agg_skb->destructor)
agg_skb->destructor = rmnet_usb_tx_skb_destructor;
#endif
err = dev_queue_xmit(skb);
err = dev_queue_xmit(agg_skb);
if (err != NET_XMIT_SUCCESS)
pNet->stats.tx_errors++;
}
dev_kfree_skb_any(skb);
skb = NULL;
return NET_XMIT_SUCCESS;
}
@ -1041,8 +1059,9 @@ new_packet:
diff = timespec64_sub(now, priv->agg_time);
if (priv->agg_skb) {
if ((priv->agg_skb->len + skb->len) < ctx->ul_data_aggregation_max_size) {
memcpy(skb_put(priv->agg_skb, skb->len), skb->data, skb->len);
if ((priv->agg_skb->len + skb->len + hdr_len) < ctx->ul_data_aggregation_max_size) {
memcpy(skb_put(priv->agg_skb, hdr_len), hdr_data, hdr_len);
memcpy(skb_put(priv->agg_skb, skb->len - ip_offset), skb->data + ip_offset, skb->len - ip_offset);
priv->agg_count++;
if (diff.tv_sec > 0 || diff.tv_nsec > agg_time_limit) {
@ -1052,7 +1071,7 @@ new_packet:
ready2send = 1;
}
else if (xmit_more == 0) {
struct rmnet_map_header *map_header = (struct rmnet_map_header *)skb->data;
struct rmnet_map_header *map_header = (struct rmnet_map_header *)hdr_data;
size_t offset = sizeof(struct rmnet_map_header);
if (map_header->next_hdr)
offset += sizeof(struct rmnet_map_v5_csum_header);
@ -1078,7 +1097,7 @@ new_packet:
ready2send = 1;
}
else if (xmit_more == 0) {
struct rmnet_map_header *map_header = (struct rmnet_map_header *)skb->data;
struct rmnet_map_header *map_header = (struct rmnet_map_header *)hdr_data;
size_t offset = sizeof(struct rmnet_map_header);
if (map_header->next_hdr)
offset += sizeof(struct rmnet_map_v5_csum_header);
@ -1090,7 +1109,8 @@ new_packet:
priv->agg_skb = alloc_skb(ctx->ul_data_aggregation_max_size, GFP_ATOMIC);
if (priv->agg_skb) {
skb_reset_network_header(priv->agg_skb); //protocol da1a is buggy, dev wwan0
memcpy(skb_put(priv->agg_skb, skb->len), skb->data, skb->len);
memcpy(skb_put(priv->agg_skb, hdr_len), hdr_data, hdr_len);
memcpy(skb_put(priv->agg_skb, skb->len - ip_offset), skb->data + ip_offset, skb->len - ip_offset);
priv->agg_count++;
dev_kfree_skb_any(skb);
skb = NULL;
@ -1101,7 +1121,12 @@ new_packet:
}
if (ready2send) {
agg_skb = skb;
agg_skb = alloc_skb(skb->len + hdr_len, GFP_ATOMIC);
if (agg_skb) {
memcpy(skb_put(agg_skb, hdr_len), hdr_data, hdr_len);
memcpy(skb_put(agg_skb, skb->len - ip_offset), skb->data + ip_offset, skb->len - ip_offset);
}
dev_kfree_skb_any(skb);
skb = NULL;
}
}
@ -1142,6 +1167,9 @@ static netdev_tx_t rmnet_vnd_start_xmit(struct sk_buff *skb,
{
int err;
struct qmap_priv *priv = netdev_priv(pNet);
int qmap_hdr[2];
int hdr_len = 0;
int ip_offset = 0;
if (netif_queue_stopped(priv->real_dev)) {
netif_stop_queue(pNet);
@ -1159,18 +1187,24 @@ static netdev_tx_t rmnet_vnd_start_xmit(struct sk_buff *skb,
}
#endif
#if 1
ip_offset = ETH_HLEN;
#else
if (skb_pull(skb, ETH_HLEN) == NULL) {
dev_kfree_skb_any (skb);
return NETDEV_TX_OK;
}
#endif
}
//printk("%s 2 skb=%p, len=%d, protocol=%x, hdr_len=%d\n", __func__, skb, skb->len, skb->protocol, skb->hdr_len);
if (priv->qmap_version == 5) {
add_qhdr(skb, priv->mux_id);
add_qhdr(skb, priv->mux_id, qmap_hdr, ip_offset);
hdr_len = 4;
}
else if (priv->qmap_version == 9) {
add_qhdr_v5(skb, priv->mux_id);
add_qhdr_v5(skb, priv->mux_id, qmap_hdr, ip_offset);
hdr_len = 8;
}
else {
dev_kfree_skb_any (skb);
@ -1178,7 +1212,7 @@ static netdev_tx_t rmnet_vnd_start_xmit(struct sk_buff *skb,
}
//printk("%s skb=%p, len=%d, protocol=%x, hdr_len=%d\n", __func__, skb, skb->len, skb->protocol, skb->hdr_len);
err = rmnet_usb_tx_agg(skb, priv);
err = rmnet_usb_tx_agg(skb, priv, qmap_hdr, hdr_len, ip_offset);
return err;
}
@ -1295,10 +1329,10 @@ static int qmap_register_device(sQmiWwanQmap * pDev, u8 offset_id)
priv->dev = pDev->mpNetDev;
priv->qmap_version = pDev->qmap_version;
priv->mux_id = QUECTEL_QMAP_MUX_ID + offset_id;
#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 17, 0)
memcpy (qmap_net->dev_addr, real_dev->dev_addr, ETH_ALEN);
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,17,0)
__dev_addr_set(qmap_net, real_dev->dev_addr, ETH_ALEN);
#else
eth_hw_addr_set (real_dev, qmap_net->dev_addr);
memcpy (qmap_net->dev_addr, real_dev->dev_addr, ETH_ALEN);
#endif
#ifdef QUECTEL_BRIDGE_MODE
@ -1314,7 +1348,9 @@ static int qmap_register_device(sQmiWwanQmap * pDev, u8 offset_id)
if (nss_cb && use_qca_nss) {
rmnet_usb_rawip_setup(qmap_net);
}
#ifdef CONFIG_PINCTRL_IPQ9574
rmnet_usb_rawip_setup(qmap_net);
#endif
priv->agg_skb = NULL;
priv->agg_count = 0;
hrtimer_init(&priv->agg_hrtimer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
@ -1460,6 +1496,10 @@ static int qmap_ndo_do_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
#ifdef CONFIG_BRIDGE_LAN
BRMAC_SETTING brmac_settings = {0};
#endif
#ifdef CONFIG_CLEAR_HALT
uint clear_halt = 0;
#endif
switch (cmd) {
case 0x89F1: //SIOCDEVPRIVATE
@ -1515,6 +1555,16 @@ static int qmap_ndo_do_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
}
break;
#endif
#ifdef CONFIG_CLEAR_HALT
case 0x89F5: //SIOCDEVPRIVATE
rc = copy_from_user(&clear_halt, ifr->ifr_ifru.ifru_data, sizeof(clear_halt));
if (rc == 0 && clear_halt == 1) {
usb_clear_halt(usbnetdev->udev,usbnetdev->in);
usb_clear_halt(usbnetdev->udev,usbnetdev->out);
pr_info("usb_clear_halt EPIN EPOUT\n");
}
break;
#endif
default:
break;
@ -1657,9 +1707,9 @@ static struct sk_buff *qmap_qmi_wwan_tx_fixup(struct usbnet *dev, struct sk_buff
if (skb) {
if(pQmapDev->qmap_version == 5)
add_qhdr(skb, QUECTEL_QMAP_MUX_ID);
add_qhdr(skb, QUECTEL_QMAP_MUX_ID, NULL, 0);
else
add_qhdr_v5(skb, QUECTEL_QMAP_MUX_ID);
add_qhdr_v5(skb, QUECTEL_QMAP_MUX_ID, NULL, 0);
}
else {
return NULL;
@ -2066,17 +2116,17 @@ static int qmi_wwan_bind(struct usbnet *dev, struct usb_interface *intf)
/* make MAC addr easily distinguishable from an IP header */
if (possibly_iphdr(dev->net->dev_addr)) {
#if LINUX_VERSION_CODE < KERNEL_VERSION(5,18,0)
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,17,0)
u8 temp_addr[ETH_ALEN];
memcpy(temp_addr, dev->net->dev_addr, ETH_ALEN);
temp_addr[0] |= 0x02; /* set local assignment bit */
temp_addr[0] &= 0xbf; /* clear "IP" bit */
__dev_addr_set(dev->net, temp_addr, ETH_ALEN);
#else
dev->net->dev_addr[0] |= 0x02; /* set local assignment bit */
dev->net->dev_addr[0] &= 0xbf; /* clear "IP" bit */
#else
u8 addr = dev->net->dev_addr[0];
addr |= 0x02; /* set local assignment bit */
addr &= 0xbf; /* clear "IP" bit */
dev_addr_mod(dev->net, 0, &addr, 1);
#endif
}
}
if (!_usbnet_get_stats64)
_usbnet_get_stats64 = dev->net->netdev_ops->ndo_get_stats64;
dev->net->netdev_ops = &qmi_wwan_netdev_ops;
@ -2109,6 +2159,9 @@ static int qmi_wwan_bind(struct usbnet *dev, struct usb_interface *intf)
NULL, 0, 100);
}
usb_clear_halt(dev->udev,dev->in);
usb_clear_halt(dev->udev,dev->out);
//to advoid module report mtu 1460, but rx 1500 bytes IP packets, and cause the customer's system crash
//next setting can make usbnet.c:usbnet_change_mtu() do not modify rx_urb_size according to hard mtu
dev->rx_urb_size = ETH_DATA_LEN + ETH_HLEN + 6;
@ -2140,7 +2193,8 @@ static int qmi_wwan_bind(struct usbnet *dev, struct usb_interface *intf)
int qmap_version = (dev->driver_info->data>>8)&0xFF;
int qmap_size = (dev->driver_info->data)&0xFF;
int idProduct = le16_to_cpu(dev->udev->descriptor.idProduct);
int lte_a = (idProduct == 0x0306 || idProduct == 0x030B || idProduct == 0x0512 || idProduct == 0x0620 || idProduct == 0x0800 || idProduct == 0x0801);
int lte_a = (idProduct == 0x0306 || idProduct == 0x030B || idProduct == 0x0512 || idProduct == 0x0620 ||
idProduct == 0x0800 || idProduct == 0x0801 || idProduct == 0x0122);
if (qmap_size > 4096 || dev->udev->speed >= USB_SPEED_SUPER) { //if meet this requirements, must be LTE-A or 5G
lte_a = 1;
@ -2162,7 +2216,7 @@ static int qmi_wwan_bind(struct usbnet *dev, struct usb_interface *intf)
if (pQmapDev->qmap_mode > 1)
pQmapDev->use_rmnet_usb = 1;
else if (idProduct == 0x0800 || idProduct == 0x0801)
else if (idProduct == 0x0800 || idProduct == 0x0801 || idProduct == 0x0122)
pQmapDev->use_rmnet_usb = 1; //benefit for ul data agg
#ifdef QMI_NETDEV_ONE_CARD_MODE
if(pQmapDev->use_rmnet_usb == 1 && pQmapDev->qmap_mode == 1)
@ -2411,7 +2465,7 @@ static const struct driver_info qmi_wwan_info = {
};
#define qmi_wwan_raw_ip_info \
.description = "WWAN/QMI device", \
.description = "WWAN/QMI Raw IP device", \
.flags = FLAG_WWAN | FLAG_RX_ASSEMBLE | FLAG_NOARP | FLAG_SEND_ZLP, \
.bind = qmi_wwan_bind, \
.unbind = qmi_wwan_unbind, \
@ -2459,6 +2513,7 @@ static const struct usb_device_id products[] = {
{ QMI_FIXED_INTF(0x05C6, 0x9215, 4) }, /* Quectel EC20 (MDM9215) */
{ QMI_FIXED_RAWIP_INTF(0x2C7C, 0x0125, 4, mdm9x07) }, /* Quectel EC20 (MDM9X07)/EC25/EG25 */
{ QMI_FIXED_RAWIP_INTF(0x2C7C, 0x0121, 4, mdm9x07) }, /* Quectel EC21 */
{ QMI_FIXED_RAWIP_INTF(0x2C7C, 0x030E, 4, mdm9x07) }, /* Quectel EM05G */
{ QMI_FIXED_RAWIP_INTF(0x2C7C, 0x0191, 4, mdm9x07) }, /* Quectel EG91 */
{ QMI_FIXED_RAWIP_INTF(0x2C7C, 0x0195, 4, mdm9x07) }, /* Quectel EG95 */
{ QMI_FIXED_RAWIP_INTF(0x2C7C, 0x0700, 3, mdm9x07) }, /* Quectel BG95 (at+qcfgext="usbnet","rmnet") */
@ -2470,6 +2525,7 @@ static const struct usb_device_id products[] = {
{ QMI_FIXED_RAWIP_INTF(0x2C7C, 0x0620, 4, mdm9x40) }, /* Quectel EG20 */
{ QMI_FIXED_RAWIP_INTF(0x2C7C, 0x0800, 4, sdx55) }, /* Quectel RG500 */
{ QMI_FIXED_RAWIP_INTF(0x2C7C, 0x0801, 4, sdx55) }, /* Quectel RG520 */
{ QMI_FIXED_RAWIP_INTF(0x2C7C, 0x0122, 4, sdx55) }, /* Quectel RG650 */
{ } /* END */
};
MODULE_DEVICE_TABLE(usb, products);