€•¿Œsphinx.addnodes”Œdocument”“”)�”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)�”}”(hhh]”(hŒ pending_xref”“”)�”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…”�”}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ'/translations/zh_CN/networking/cdc_mbim”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ'/translations/zh_TW/networking/cdc_mbim”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ'/translations/it_IT/networking/cdc_mbim”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ'/translations/ja_JP/networking/cdc_mbim”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ'/translations/ko_KR/networking/cdc_mbim”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ'/translations/pt_BR/networking/cdc_mbim”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ'/translations/sp_SP/networking/cdc_mbim”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)�”}”(hŒ SPDX-License-Identifier: GPL-2.0”h]”hŒ SPDX-License-Identifier: GPL-2.0”…”�”}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³ŒA/var/lib/git/docbuild/linux/Documentation/networking/cdc_mbim.rst”h´KubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒ6cdc_mbim - Driver for CDC MBIM Mobile Broadband modems”h]”hŒ6cdc_mbim - Driver for CDC MBIM Mobile Broadband modems”…”�”}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÊh²hh³hÇh´KubhŒ paragraph”“”)�”}”(hXpThe cdc_mbim driver supports USB devices conforming to the "Universal Serial Bus Communications Class Subclass Specification for Mobile Broadband Interface Model" [1], which is a further development of "Universal Serial Bus Communications Class Subclass Specifications for Network Control Model Devices" [2] optimized for Mobile Broadband devices, aka "3G/LTE modems".”h]”hX|The cdc_mbim driver supports USB devices conforming to the “Universal Serial Bus Communications Class Subclass Specification for Mobile Broadband Interface Modelâ€� [1], which is a further development of “Universal Serial Bus Communications Class Subclass Specifications for Network Control Model Devicesâ€� [2] optimized for Mobile Broadband devices, aka “3G/LTE modemsâ€�.”…”�”}”(hhßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhhÊh²hubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒCommand Line Parameters”h]”hŒCommand Line Parameters”…”�”}”(hhðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhíh²hh³hÇh´KubhÞ)�”}”(hŒáThe cdc_mbim driver has no parameters of its own. But the probing behaviour for NCM 1.0 backwards compatible MBIM functions (an "NCM/MBIM function" as defined in section 3.2 of [1]) is affected by a cdc_ncm driver parameter:”h]”hŒåThe cdc_mbim driver has no parameters of its own. But the probing behaviour for NCM 1.0 backwards compatible MBIM functions (an “NCM/MBIM functionâ€� as defined in section 3.2 of [1]) is affected by a cdc_ncm driver parameter:”…”�”}”(hhþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khhíh²hubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ prefer_mbim”h]”hŒ prefer_mbim”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj h²hh³hÇh´KubhŒ field_list”“”)�”}”(hhh]”(hŒfield”“”)�”}”(hhh]”(hŒ field_name”“”)�”}”(hŒType”h]”hŒType”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j'hj$h³hÇh´KubhŒ field_body”“”)�”}”(hŒBoolean”h]”hÞ)�”}”(hj;h]”hŒBoolean”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j"h³hÇh´Khjh²hubj#)�”}”(hhh]”(j()�”}”(hŒ Valid Range”h]”hŒ Valid Range”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j'hjVh³hÇh´Kubj8)�”}”(hŒ N/Y (0-1)”h]”hÞ)�”}”(hjih]”hŒ N/Y (0-1)”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khjgubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hjVubeh}”(h]”h ]”h"]”h$]”h&]”uh1j"h³hÇh´Khjh²hubj#)�”}”(hhh]”(j()�”}”(hŒ Default Value”h]”hŒ Default Value”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j'hj„h³hÇh´Kubj8)�”}”(hŒY (MBIM is preferred) ”h]”hÞ)�”}”(hŒY (MBIM is preferred)”h]”hŒY (MBIM is preferred)”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khj•ubah}”(h]”h ]”h"]”h$]”h&]”uh1j7hj„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j"h³hÇh´Khjh²hubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj h²hh³hÇh´KubhÞ)�”}”(hX0This parameter sets the system policy for NCM/MBIM functions. Such functions will be handled by either the cdc_ncm driver or the cdc_mbim driver depending on the prefer_mbim setting. Setting prefer_mbim=N makes the cdc_mbim driver ignore these functions and lets the cdc_ncm driver handle them instead.”h]”hX0This parameter sets the system policy for NCM/MBIM functions. Such functions will be handled by either the cdc_ncm driver or the cdc_mbim driver depending on the prefer_mbim setting. Setting prefer_mbim=N makes the cdc_mbim driver ignore these functions and lets the cdc_ncm driver handle them instead.”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khj h²hubhÞ)�”}”(hŒ«The parameter is writable, and can be changed at any time. A manual unbind/bind is required to make the change effective for NCM/MBIM functions bound to the "wrong" driver”h]”hŒ¯The parameter is writable, and can be changed at any time. A manual unbind/bind is required to make the change effective for NCM/MBIM functions bound to the “wrongâ€� driver”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K#hj h²hubeh}”(h]”Œ prefer-mbim”ah ]”h"]”Œ prefer_mbim”ah$]”h&]”uh1hÈhhíh²hh³hÇh´Kubeh}”(h]”Œcommand-line-parameters”ah ]”h"]”Œcommand line parameters”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ Basic usage”h]”hŒ Basic usage”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjåh²hh³hÇh´K)ubhÞ)�”}”(hX$MBIM functions are inactive when unmanaged. The cdc_mbim driver only provides a userspace interface to the MBIM control channel, and will not participate in the management of the function. This implies that a userspace MBIM management application always is required to enable a MBIM function.”h]”hX$MBIM functions are inactive when unmanaged. The cdc_mbim driver only provides a userspace interface to the MBIM control channel, and will not participate in the management of the function. This implies that a userspace MBIM management application always is required to enable a MBIM function.”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K+hjåh²hubhÞ)�”}”(hŒ=Such userspace applications includes, but are not limited to:”h]”hŒ=Such userspace applications includes, but are not limited to:”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K1hjåh²hubhŒ block_quote”“”)�”}”(hŒJ- mbimcli (included with the libmbim [3] library), and - ModemManager [4] ”h]”hŒ bullet_list”“”)�”}”(hhh]”(hŒ list_item”“”)�”}”(hŒ4mbimcli (included with the libmbim [3] library), and”h]”hÞ)�”}”(hj!h]”hŒ4mbimcli (included with the libmbim [3] library), and”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K3hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubj)�”}”(hŒModemManager [4] ”h]”hÞ)�”}”(hŒModemManager [4]”h]”hŒModemManager [4]”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K4hj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ-”uh1jh³hÇh´K3hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´K3hjåh²hubhÞ)�”}”(hŒ]Establishing a MBIM IP session requires at least these actions by the management application:”h]”hŒ]Establishing a MBIM IP session requires at least these actions by the management application:”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K6hjåh²hubj)�”}”(hŒq- open the control channel - configure network connection settings - connect to network - configure IP interface ”h]”j)�”}”(hhh]”(j)�”}”(hŒopen the control channel”h]”hÞ)�”}”(hjsh]”hŒopen the control channel”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K9hjqubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjnubj)�”}”(hŒ%configure network connection settings”h]”hÞ)�”}”(hjŠh]”hŒ%configure network connection settings”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K:hjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjnubj)�”}”(hŒconnect to network”h]”hÞ)�”}”(hj¡h]”hŒconnect to network”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K;hjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjnubj)�”}”(hŒconfigure IP interface ”h]”hÞ)�”}”(hŒconfigure IP interface”h]”hŒconfigure IP interface”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K userspace interfaces are described below. The MBIM control channel protocol is described in [1].”h]”hŒpThe driver <-> userspace interfaces are described below. The MBIM control channel protocol is described in [1].”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K@hjÚh²hubeh}”(h]”Œ"management-application-development”ah ]”h"]”Œ"management application development”ah$]”h&]”uh1hÈhjåh²hh³hÇh´K?ubeh}”(h]”Œ basic-usage”ah ]”h"]”Œ basic usage”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K)ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ"MBIM control channel userspace ABI”h]”hŒ"MBIM control channel userspace ABI”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj h²hh³hÇh´KEubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ/dev/cdc-wdmX character device”h]”hŒ/dev/cdc-wdmX character device”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjh²hh³hÇh´KHubhÞ)�”}”(hŒÃThe driver creates a two-way pipe to the MBIM function control channel using the cdc-wdm driver as a subdriver. The userspace end of the control channel pipe is a /dev/cdc-wdmX character device.”h]”hŒÃThe driver creates a two-way pipe to the MBIM function control channel using the cdc-wdm driver as a subdriver. The userspace end of the control channel pipe is a /dev/cdc-wdmX character device.”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KIhjh²hubhÞ)�”}”(hX The cdc_mbim driver does not process or police messages on the control channel. The channel is fully delegated to the userspace management application. It is therefore up to this application to ensure that it complies with all the control channel requirements in [1].”h]”hX The cdc_mbim driver does not process or police messages on the control channel. The channel is fully delegated to the userspace management application. It is therefore up to this application to ensure that it complies with all the control channel requirements in [1].”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KMhjh²hubhÞ)�”}”(hŒ¿The cdc-wdmX device is created as a child of the MBIM control interface USB device. The character device associated with a specific MBIM function can be looked up using sysfs. For example::”h]”hŒ¾The cdc-wdmX device is created as a child of the MBIM control interface USB device. The character device associated with a specific MBIM function can be looked up using sysfs. For example:”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KRhjh²hubhŒ literal_block”“”)�”}”(hŒ bjorn@nemi:~$ ls /sys/bus/usb/drivers/cdc_mbim/2-4:2.12/usbmisc cdc-wdm0 bjorn@nemi:~$ grep . /sys/bus/usb/drivers/cdc_mbim/2-4:2.12/usbmisc/cdc-wdm0/dev 180:0”h]”hŒ bjorn@nemi:~$ ls /sys/bus/usb/drivers/cdc_mbim/2-4:2.12/usbmisc cdc-wdm0 bjorn@nemi:~$ grep . /sys/bus/usb/drivers/cdc_mbim/2-4:2.12/usbmisc/cdc-wdm0/dev 180:0”…”�”}”hjWsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jUh³hÇh´KVhjh²hubeh}”(h]”Œdev-cdc-wdmx-character-device”ah ]”h"]”Œ/dev/cdc-wdmx character device”ah$]”h&]”uh1hÈhj h²hh³hÇh´KHubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒUSB configuration descriptors”h]”hŒUSB configuration descriptors”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjmh²hh³hÇh´K^ubhÞ)�”}”(hX&The wMaxControlMessage field of the CDC MBIM functional descriptor limits the maximum control message size. The management application is responsible for negotiating a control message size complying with the requirements in section 9.3.1 of [1], taking this descriptor field into consideration.”h]”hX&The wMaxControlMessage field of the CDC MBIM functional descriptor limits the maximum control message size. The management application is responsible for negotiating a control message size complying with the requirements in section 9.3.1 of [1], taking this descriptor field into consideration.”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K_hjmh²hubhÞ)�”}”(hŒºThe userspace application can access the CDC MBIM functional descriptor of a MBIM function using either of the two USB configuration descriptor kernel interfaces described in [6] or [7].”h]”hŒºThe userspace application can access the CDC MBIM functional descriptor of a MBIM function using either of the two USB configuration descriptor kernel interfaces described in [6] or [7].”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kehjmh²hubhÞ)�”}”(hŒ'See also the ioctl documentation below.”h]”hŒ'See also the ioctl documentation below.”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kihjmh²hubeh}”(h]”Œusb-configuration-descriptors”ah ]”h"]”Œusb configuration descriptors”ah$]”h&]”uh1hÈhj h²hh³hÇh´K^ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ Fragmentation”h]”hŒ Fragmentation”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj°h²hh³hÇh´KmubhÞ)�”}”(hŒ†The userspace application is responsible for all control message fragmentation and defragmentaion, as described in section 9.5 of [1].”h]”hŒ†The userspace application is responsible for all control message fragmentation and defragmentaion, as described in section 9.5 of [1].”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Knhj°h²hubeh}”(h]”Œ fragmentation”ah ]”h"]”Œ fragmentation”ah$]”h&]”uh1hÈhj h²hh³hÇh´KmubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ/dev/cdc-wdmX write()”h]”hŒ/dev/cdc-wdmX write()”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj×h²hh³hÇh´KsubhÞ)�”}”(hŒpThe MBIM control messages from the management application *must not* exceed the negotiated control message size.”h]”(hŒ:The MBIM control messages from the management application ”…”�”}”(hjèh²hh³Nh´NubhŒemphasis”“”)�”}”(hŒ *must not*”h]”hŒmust not”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jðhjèubhŒ, exceed the negotiated control message size.”…”�”}”(hjèh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kthj×h²hubeh}”(h]”Œdev-cdc-wdmx-write”ah ]”h"]”Œ/dev/cdc-wdmx write()”ah$]”h&]”uh1hÈhj h²hh³hÇh´KsubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ/dev/cdc-wdmX read()”h]”hŒ/dev/cdc-wdmX read()”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjh²hh³hÇh´KyubhÞ)�”}”(hŒdThe management application *must* accept control messages of up the negotiated control message size.”h]”(hŒThe management application ”…”�”}”(hj#h²hh³Nh´Nubjñ)�”}”(hŒ*must*”h]”hŒmust”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jðhj#ubhŒC accept control messages of up the negotiated control message size.”…”�”}”(hj#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kzhjh²hubeh}”(h]”Œdev-cdc-wdmx-read”ah ]”h"]”Œ/dev/cdc-wdmx read()”ah$]”h&]”uh1hÈhj h²hh³hÇh´KyubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ/dev/cdc-wdmX ioctl()”h]”hŒ/dev/cdc-wdmX ioctl()”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjKh²hh³hÇh´KubhÞ)�”}”(hŒýIOCTL_WDM_MAX_COMMAND: Get Maximum Command Size This ioctl returns the wMaxControlMessage field of the CDC MBIM functional descriptor for MBIM devices. This is intended as a convenience, eliminating the need to parse the USB descriptors from userspace.”h]”hŒýIOCTL_WDM_MAX_COMMAND: Get Maximum Command Size This ioctl returns the wMaxControlMessage field of the CDC MBIM functional descriptor for MBIM devices. This is intended as a convenience, eliminating the need to parse the USB descriptors from userspace.”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K€hjKh²hubjV)�”}”(hX6#include #include #include #include #include int main() { __u16 max; int fd = open("/dev/cdc-wdm0", O_RDWR); if (!ioctl(fd, IOCTL_WDM_MAX_COMMAND, &max)) printf("wMaxControlMessage is %d\n", max); }”h]”hX6#include #include #include #include #include int main() { __u16 max; int fd = open("/dev/cdc-wdm0", O_RDWR); if (!ioctl(fd, IOCTL_WDM_MAX_COMMAND, &max)) printf("wMaxControlMessage is %d\n", max); }”…”�”}”hjjsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jUh³hÇh´KˆhjKh²hubeh}”(h]”Œdev-cdc-wdmx-ioctl”ah ]”h"]”Œ/dev/cdc-wdmx ioctl()”ah$]”h&]”uh1hÈhj h²hh³hÇh´KubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒCustom device services”h]”hŒCustom device services”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj€h²hh³hÇh´K—ubhÞ)�”}”(hŒ|The MBIM specification allows vendors to freely define additional services. This is fully supported by the cdc_mbim driver.”h]”hŒ|The MBIM specification allows vendors to freely define additional services. This is fully supported by the cdc_mbim driver.”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K˜hj€h²hubhÞ)�”}”(hŒ”Support for new MBIM services, including vendor specified services, is implemented entirely in userspace, like the rest of the MBIM control protocol”h]”hŒ”Support for new MBIM services, including vendor specified services, is implemented entirely in userspace, like the rest of the MBIM control protocol”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K›hj€h²hubhÞ)�”}”(hŒ;New services should be registered in the MBIM Registry [5].”h]”hŒ;New services should be registered in the MBIM Registry [5].”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KŸhj€h²hubeh}”(h]”Œcustom-device-services”ah ]”h"]”Œcustom device services”ah$]”h&]”uh1hÈhj h²hh³hÇh´K—ubeh}”(h]”Œ"mbim-control-channel-userspace-abi”ah ]”h"]”Œ"mbim control channel userspace abi”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KEubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒMBIM data channel userspace ABI”h]”hŒMBIM data channel userspace ABI”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjËh²hh³hÇh´K¤ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒwwanY network device”h]”hŒwwanY network device”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjÜh²hh³hÇh´K§ubhÞ)�”}”(hŒ¡The cdc_mbim driver represents the MBIM data channel as a single network device of the "wwan" type. This network device is initially mapped to MBIM IP session 0.”h]”hŒ¥The cdc_mbim driver represents the MBIM data channel as a single network device of the “wwanâ€� type. This network device is initially mapped to MBIM IP session 0.”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K¨hjÜh²hubeh}”(h]”Œwwany-network-device”ah ]”h"]”Œwwany network device”ah$]”h&]”uh1hÈhjËh²hh³hÇh´K§ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒMultiplexed IP sessions (IPS)”h]”hŒMultiplexed IP sessions (IPS)”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjh²hh³hÇh´K®ubhÞ)�”}”(hŒüMBIM allows multiplexing up to 256 IP sessions over a single USB data channel. The cdc_mbim driver models such IP sessions as 802.1q VLAN subdevices of the master wwanY device, mapping MBIM IP session Z to VLAN ID Z for all values of Z greater than 0.”h]”hŒüMBIM allows multiplexing up to 256 IP sessions over a single USB data channel. The cdc_mbim driver models such IP sessions as 802.1q VLAN subdevices of the master wwanY device, mapping MBIM IP session Z to VLAN ID Z for all values of Z greater than 0.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K¯hjh²hubhÞ)�”}”(hŒhThe device maximum Z is given in the MBIM_DEVICE_CAPS_INFO structure described in section 10.5.1 of [1].”h]”hŒhThe device maximum Z is given in the MBIM_DEVICE_CAPS_INFO structure described in section 10.5.1 of [1].”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K´hjh²hubhÞ)�”}”(hŒùThe userspace management application is responsible for adding new VLAN links prior to establishing MBIM IP sessions where the SessionId is greater than 0. These links can be added by using the normal VLAN kernel interfaces, either ioctl or netlink.”h]”hŒùThe userspace management application is responsible for adding new VLAN links prior to establishing MBIM IP sessions where the SessionId is greater than 0. These links can be added by using the normal VLAN kernel interfaces, either ioctl or netlink.”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K·hjh²hubhÞ)�”}”(hŒCFor example, adding a link for a MBIM IP session with SessionId 3::”h]”hŒBFor example, adding a link for a MBIM IP session with SessionId 3:”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K¼hjh²hubjV)�”}”(hŒ2ip link add link wwan0 name wwan0.3 type vlan id 3”h]”hŒ2ip link add link wwan0 name wwan0.3 type vlan id 3”…”�”}”hjLsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jUh³hÇh´K¾hjh²hubhÞ)�”}”(hŒTThe driver will automatically map the "wwan0.3" network device to MBIM IP session 3.”h]”hŒXThe driver will automatically map the “wwan0.3â€� network device to MBIM IP session 3.”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÀhjh²hubeh}”(h]”Œmultiplexed-ip-sessions-ips”ah ]”h"]”Œmultiplexed ip sessions (ips)”ah$]”h&]”uh1hÈhjËh²hh³hÇh´K®ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒDevice Service Streams (DSS)”h]”hŒDevice Service Streams (DSS)”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjph²hh³hÇh´KÅubhÞ)�”}”(hXMBIM also allows up to 256 non-IP data streams to be multiplexed over the same shared USB data channel. The cdc_mbim driver models these sessions as another set of 802.1q VLAN subdevices of the master wwanY device, mapping MBIM DSS session A to VLAN ID (256 + A) for all values of A.”h]”hXMBIM also allows up to 256 non-IP data streams to be multiplexed over the same shared USB data channel. The cdc_mbim driver models these sessions as another set of 802.1q VLAN subdevices of the master wwanY device, mapping MBIM DSS session A to VLAN ID (256 + A) for all values of A.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÆhjph²hubhÞ)�”}”(hŒmThe device maximum A is given in the MBIM_DEVICE_SERVICES_INFO structure described in section 10.5.29 of [1].”h]”hŒmThe device maximum A is given in the MBIM_DEVICE_SERVICES_INFO structure described in section 10.5.29 of [1].”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÌhjph²hubhÞ)�”}”(hX–The DSS VLAN subdevices are used as a practical interface between the shared MBIM data channel and a MBIM DSS aware userspace application. It is not intended to be presented as-is to an end user. The assumption is that a userspace application initiating a DSS session also takes care of the necessary framing of the DSS data, presenting the stream to the end user in an appropriate way for the stream type.”h]”hX–The DSS VLAN subdevices are used as a practical interface between the shared MBIM data channel and a MBIM DSS aware userspace application. It is not intended to be presented as-is to an end user. The assumption is that a userspace application initiating a DSS session also takes care of the necessary framing of the DSS data, presenting the stream to the end user in an appropriate way for the stream type.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÏhjph²hubhÞ)�”}”(hŒ­The network device ABI requires a dummy ethernet header for every DSS data frame being transported. The contents of this header is arbitrary, with the following exceptions:”h]”hŒ­The network device ABI requires a dummy ethernet header for every DSS data frame being transported. The contents of this header is arbitrary, with the following exceptions:”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÖhjph²hubj)�”}”(hX- TX frames using an IP protocol (0x0800 or 0x86dd) will be dropped - RX frames will have the protocol field set to ETH_P_802_3 (but will not be properly formatted 802.3 frames) - RX frames will have the destination address set to the hardware address of the master device ”h]”j)�”}”(hhh]”(j)�”}”(hŒATX frames using an IP protocol (0x0800 or 0x86dd) will be dropped”h]”hÞ)�”}”(hjÂh]”hŒATX frames using an IP protocol (0x0800 or 0x86dd) will be dropped”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÚhjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj½ubj)�”}”(hŒkRX frames will have the protocol field set to ETH_P_802_3 (but will not be properly formatted 802.3 frames)”h]”hÞ)�”}”(hŒkRX frames will have the protocol field set to ETH_P_802_3 (but will not be properly formatted 802.3 frames)”h]”hŒkRX frames will have the protocol field set to ETH_P_802_3 (but will not be properly formatted 802.3 frames)”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÛhj×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj½ubj)�”}”(hŒ]RX frames will have the destination address set to the hardware address of the master device ”h]”hÞ)�”}”(hŒ\RX frames will have the destination address set to the hardware address of the master device”h]”hŒ\RX frames will have the destination address set to the hardware address of the master device”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÝhjïubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj½ubeh}”(h]”h ]”h"]”h$]”h&]”jTjUuh1jh³hÇh´KÚhj¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´KÚhjph²hubhÞ)�”}”(hŒ…The DSS supporting userspace management application is responsible for adding the dummy ethernet header on TX and stripping it on RX.”h]”hŒ…The DSS supporting userspace management application is responsible for adding the dummy ethernet header on TX and stripping it on RX.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kàhjph²hubhÞ)�”}”(hŒ�This is a simple example using tools commonly available, exporting DssSessionId 5 as a pty character device pointed to by a /dev/nmea symlink::”h]”hŒŽThis is a simple example using tools commonly available, exporting DssSessionId 5 as a pty character device pointed to by a /dev/nmea symlink:”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kãhjph²hubjV)�”}”(hŒ’ip link add link wwan0 name wwan0.dss5 type vlan id 261 ip link set dev wwan0.dss5 up socat INTERFACE:wwan0.dss5,type=2 PTY:,echo=0,link=/dev/nmea”h]”hŒ’ip link add link wwan0 name wwan0.dss5 type vlan id 261 ip link set dev wwan0.dss5 up socat INTERFACE:wwan0.dss5,type=2 PTY:,echo=0,link=/dev/nmea”…”�”}”hj/sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jUh³hÇh´Kçhjph²hubhÞ)�”}”(hŒÕThis is only an example, most suitable for testing out a DSS service. Userspace applications supporting specific MBIM DSS services are expected to use the tools and programming interfaces required by that service.”h]”hŒÕThis is only an example, most suitable for testing out a DSS service. Userspace applications supporting specific MBIM DSS services are expected to use the tools and programming interfaces required by that service.”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Këhjph²hubhÞ)�”}”(hXíNote that adding VLAN links for DSS sessions is entirely optional. A management application may instead choose to bind a packet socket directly to the master network device, using the received VLAN tags to map frames to the correct DSS session and adding 18 byte VLAN ethernet headers with the appropriate tag on TX. In this case using a socket filter is recommended, matching only the DSS VLAN subset. This avoid unnecessary copying of unrelated IP session data to userspace. For example::”h]”hXìNote that adding VLAN links for DSS sessions is entirely optional. A management application may instead choose to bind a packet socket directly to the master network device, using the received VLAN tags to map frames to the correct DSS session and adding 18 byte VLAN ethernet headers with the appropriate tag on TX. In this case using a socket filter is recommended, matching only the DSS VLAN subset. This avoid unnecessary copying of unrelated IP session data to userspace. For example:”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kðhjph²hubjV)�”}”(hXùstatic struct sock_filter dssfilter[] = { /* use special negative offsets to get VLAN tag */ BPF_STMT(BPF_LD|BPF_B|BPF_ABS, SKF_AD_OFF + SKF_AD_VLAN_TAG_PRESENT), BPF_JUMP(BPF_JMP|BPF_JEQ|BPF_K, 1, 0, 6), /* true */ /* verify DSS VLAN range */ BPF_STMT(BPF_LD|BPF_H|BPF_ABS, SKF_AD_OFF + SKF_AD_VLAN_TAG), BPF_JUMP(BPF_JMP|BPF_JGE|BPF_K, 256, 0, 4), /* 256 is first DSS VLAN */ BPF_JUMP(BPF_JMP|BPF_JGE|BPF_K, 512, 3, 0), /* 511 is last DSS VLAN */ /* verify ethertype */ BPF_STMT(BPF_LD|BPF_H|BPF_ABS, 2 * ETH_ALEN), BPF_JUMP(BPF_JMP|BPF_JEQ|BPF_K, ETH_P_802_3, 0, 1), BPF_STMT(BPF_RET|BPF_K, (u_int)-1), /* accept */ BPF_STMT(BPF_RET|BPF_K, 0), /* ignore */ };”h]”hXùstatic struct sock_filter dssfilter[] = { /* use special negative offsets to get VLAN tag */ BPF_STMT(BPF_LD|BPF_B|BPF_ABS, SKF_AD_OFF + SKF_AD_VLAN_TAG_PRESENT), BPF_JUMP(BPF_JMP|BPF_JEQ|BPF_K, 1, 0, 6), /* true */ /* verify DSS VLAN range */ BPF_STMT(BPF_LD|BPF_H|BPF_ABS, SKF_AD_OFF + SKF_AD_VLAN_TAG), BPF_JUMP(BPF_JMP|BPF_JGE|BPF_K, 256, 0, 4), /* 256 is first DSS VLAN */ BPF_JUMP(BPF_JMP|BPF_JGE|BPF_K, 512, 3, 0), /* 511 is last DSS VLAN */ /* verify ethertype */ BPF_STMT(BPF_LD|BPF_H|BPF_ABS, 2 * ETH_ALEN), BPF_JUMP(BPF_JMP|BPF_JEQ|BPF_K, ETH_P_802_3, 0, 1), BPF_STMT(BPF_RET|BPF_K, (u_int)-1), /* accept */ BPF_STMT(BPF_RET|BPF_K, 0), /* ignore */ };”…”�”}”hjYsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jUh³hÇh´Kùhjph²hubeh}”(h]”Œdevice-service-streams-dss”ah ]”h"]”Œdevice service streams (dss)”ah$]”h&]”uh1hÈhjËh²hh³hÇh´KÅubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒTagged IP session 0 VLAN”h]”hŒTagged IP session 0 VLAN”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjoh²hh³hÇh´MubhÞ)�”}”(hŒ’As described above, MBIM IP session 0 is treated as special by the driver. It is initially mapped to untagged frames on the wwanY network device.”h]”hŒ’As described above, MBIM IP session 0 is treated as special by the driver. It is initially mapped to untagged frames on the wwanY network device.”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhjoh²hubhÞ)�”}”(hŒoThis mapping implies a few restrictions on multiplexed IPS and DSS sessions, which may not always be practical:”h]”hŒoThis mapping implies a few restrictions on multiplexed IPS and DSS sessions, which may not always be practical:”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhjoh²hubj)�”}”(hŒÄ- no IPS or DSS session can use a frame size greater than the MTU on IP session 0 - no IPS or DSS session can be in the up state unless the network device representing IP session 0 also is up ”h]”j)�”}”(hhh]”(j)�”}”(hŒOno IPS or DSS session can use a frame size greater than the MTU on IP session 0”h]”hÞ)�”}”(hŒOno IPS or DSS session can use a frame size greater than the MTU on IP session 0”h]”hŒOno IPS or DSS session can use a frame size greater than the MTU on IP session 0”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhj£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubj)�”}”(hŒlno IPS or DSS session can be in the up state unless the network device representing IP session 0 also is up ”h]”hÞ)�”}”(hŒkno IPS or DSS session can be in the up state unless the network device representing IP session 0 also is up”h]”hŒkno IPS or DSS session can be in the up state unless the network device representing IP session 0 also is up”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhj»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubeh}”(h]”h ]”h"]”h$]”h&]”jTjUuh1jh³hÇh´Mhjœubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´Mhjoh²hubhÞ)�”}”(hX^These problems can be avoided by optionally making the driver map IP session 0 to a VLAN subdevice, similar to all other IP sessions. This behaviour is triggered by adding a VLAN link for the magic VLAN ID 4094. The driver will then immediately start mapping MBIM IP session 0 to this VLAN, and will drop untagged frames on the master wwanY device.”h]”hX^These problems can be avoided by optionally making the driver map IP session 0 to a VLAN subdevice, similar to all other IP sessions. This behaviour is triggered by adding a VLAN link for the magic VLAN ID 4094. The driver will then immediately start mapping MBIM IP session 0 to this VLAN, and will drop untagged frames on the master wwanY device.”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhjoh²hubhÞ)�”}”(hŒ‹Tip: It might be less confusing to the end user to name this VLAN subdevice after the MBIM SessionID instead of the VLAN ID. For example::”h]”hŒŠTip: It might be less confusing to the end user to name this VLAN subdevice after the MBIM SessionID instead of the VLAN ID. For example:”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M"hjoh²hubjV)�”}”(hŒ5ip link add link wwan0 name wwan0.0 type vlan id 4094”h]”hŒ5ip link add link wwan0 name wwan0.0 type vlan id 4094”…”�”}”hjûsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jUh³hÇh´M&hjoh²hubeh}”(h]”Œtagged-ip-session-0-vlan”ah ]”h"]”Œtagged ip session 0 vlan”ah$]”h&]”uh1hÈhjËh²hh³hÇh´MubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ VLAN mapping”h]”hŒ VLAN mapping”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjh²hh³hÇh´M*ubhÞ)�”}”(hŒ³Summarizing the cdc_mbim driver mapping described above, we have this relationship between VLAN tags on the wwanY network device and MBIM sessions on the shared USB data channel::”h]”hŒ²Summarizing the cdc_mbim driver mapping described above, we have this relationship between VLAN tags on the wwanY network device and MBIM sessions on the shared USB data channel:”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M,hjh²hubjV)�”}”(hX VLAN ID MBIM type MBIM SessionID Notes --------------------------------------------------------- untagged IPS 0 a) 1 - 255 IPS 1 - 255 256 - 511 DSS 0 - 255 512 - 4093 b) 4094 IPS 0 c) a) if no VLAN ID 4094 link exists, else dropped b) unsupported VLAN range, unconditionally dropped c) if a VLAN ID 4094 link exists, else dropped”h]”hX VLAN ID MBIM type MBIM SessionID Notes --------------------------------------------------------- untagged IPS 0 a) 1 - 255 IPS 1 - 255 256 - 511 DSS 0 - 255 512 - 4093 b) 4094 IPS 0 c) a) if no VLAN ID 4094 link exists, else dropped b) unsupported VLAN range, unconditionally dropped c) if a VLAN ID 4094 link exists, else dropped”…”�”}”hj0sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jUh³hÇh´M0hjh²hubeh}”(h]”Œ vlan-mapping”ah ]”h"]”Œ vlan mapping”ah$]”h&]”uh1hÈhjËh²hh³hÇh´M*ubeh}”(h]”Œmbim-data-channel-userspace-abi”ah ]”h"]”Œmbim data channel userspace abi”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K¤ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ References”h]”hŒ References”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjNh²hh³hÇh´M@ubj)�”}”(hX~1) USB Implementers Forum, Inc. - "Universal Serial Bus Communications Class Subclass Specification for Mobile Broadband Interface Model", Revision 1.0 (Errata 1), May 1, 2013 - http://www.usb.org/developers/docs/devclass_docs/ 2) USB Implementers Forum, Inc. - "Universal Serial Bus Communications Class Subclass Specifications for Network Control Model Devices", Revision 1.0 (Errata 1), November 24, 2010 - http://www.usb.org/developers/docs/devclass_docs/ 3) libmbim - "a glib-based library for talking to WWAN modems and devices which speak the Mobile Interface Broadband Model (MBIM) protocol" - http://www.freedesktop.org/wiki/Software/libmbim/ 4) ModemManager - "a DBus-activated daemon which controls mobile broadband (2G/3G/4G) devices and connections" - http://www.freedesktop.org/wiki/Software/ModemManager/ 5) "MBIM (Mobile Broadband Interface Model) Registry" - http://compliance.usb.org/mbim/ 6) "/sys/kernel/debug/usb/devices output format" - Documentation/driver-api/usb/usb.rst 7) "/sys/bus/usb/devices/.../descriptors" - Documentation/ABI/stable/sysfs-bus-usb”h]”hŒenumerated_list”“”)�”}”(hhh]”(j)�”}”(hŒäUSB Implementers Forum, Inc. - "Universal Serial Bus Communications Class Subclass Specification for Mobile Broadband Interface Model", Revision 1.0 (Errata 1), May 1, 2013 - http://www.usb.org/developers/docs/devclass_docs/ ”h]”(hÞ)�”}”(hŒ¬USB Implementers Forum, Inc. - "Universal Serial Bus Communications Class Subclass Specification for Mobile Broadband Interface Model", Revision 1.0 (Errata 1), May 1, 2013”h]”hŒ°USB Implementers Forum, Inc. - “Universal Serial Bus Communications Class Subclass Specification for Mobile Broadband Interface Modelâ€�, Revision 1.0 (Errata 1), May 1, 2013”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MBhjhubj)�”}”(hŒ4- http://www.usb.org/developers/docs/devclass_docs/ ”h]”j)�”}”(hhh]”j)�”}”(hŒ2http://www.usb.org/developers/docs/devclass_docs/ ”h]”hÞ)�”}”(hŒ1http://www.usb.org/developers/docs/devclass_docs/”h]”hŒ reference”“”)�”}”(hj‡h]”hŒ1http://www.usb.org/developers/docs/devclass_docs/”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”j‡uh1j‰hj…ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MFhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj~ubah}”(h]”h ]”h"]”h$]”h&]”jTjUuh1jh³hÇh´MFhjzubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´MFhjhubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjeubj)�”}”(hŒèUSB Implementers Forum, Inc. - "Universal Serial Bus Communications Class Subclass Specifications for Network Control Model Devices", Revision 1.0 (Errata 1), November 24, 2010 - http://www.usb.org/developers/docs/devclass_docs/ ”h]”(hÞ)�”}”(hŒ°USB Implementers Forum, Inc. - "Universal Serial Bus Communications Class Subclass Specifications for Network Control Model Devices", Revision 1.0 (Errata 1), November 24, 2010”h]”hŒ´USB Implementers Forum, Inc. - “Universal Serial Bus Communications Class Subclass Specifications for Network Control Model Devicesâ€�, Revision 1.0 (Errata 1), November 24, 2010”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MHhj·ubj)�”}”(hŒ4- http://www.usb.org/developers/docs/devclass_docs/ ”h]”j)�”}”(hhh]”j)�”}”(hŒ2http://www.usb.org/developers/docs/devclass_docs/ ”h]”hÞ)�”}”(hŒ1http://www.usb.org/developers/docs/devclass_docs/”h]”jŠ)�”}”(hjÖh]”hŒ1http://www.usb.org/developers/docs/devclass_docs/”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”jÖuh1j‰hjÔubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MLhjÐubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÍubah}”(h]”h ]”h"]”h$]”h&]”jTjUuh1jh³hÇh´MLhjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´MLhj·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjeubj)�”}”(hŒÀlibmbim - "a glib-based library for talking to WWAN modems and devices which speak the Mobile Interface Broadband Model (MBIM) protocol" - http://www.freedesktop.org/wiki/Software/libmbim/ ”h]”(hÞ)�”}”(hŒˆlibmbim - "a glib-based library for talking to WWAN modems and devices which speak the Mobile Interface Broadband Model (MBIM) protocol"”h]”hŒŒlibmbim - “a glib-based library for talking to WWAN modems and devices which speak the Mobile Interface Broadband Model (MBIM) protocolâ€�”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MNhjubj)�”}”(hŒ4- http://www.freedesktop.org/wiki/Software/libmbim/ ”h]”j)�”}”(hhh]”j)�”}”(hŒ2http://www.freedesktop.org/wiki/Software/libmbim/ ”h]”hÞ)�”}”(hŒ1http://www.freedesktop.org/wiki/Software/libmbim/”h]”jŠ)�”}”(hj#h]”hŒ1http://www.freedesktop.org/wiki/Software/libmbim/”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”j#uh1j‰hj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MRhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”jTjUuh1jh³hÇh´MRhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´MRhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjeubj)�”}”(hŒ¨ModemManager - "a DBus-activated daemon which controls mobile broadband (2G/3G/4G) devices and connections" - http://www.freedesktop.org/wiki/Software/ModemManager/ ”h]”(hÞ)�”}”(hŒkModemManager - "a DBus-activated daemon which controls mobile broadband (2G/3G/4G) devices and connections"”h]”hŒoModemManager - “a DBus-activated daemon which controls mobile broadband (2G/3G/4G) devices and connectionsâ€�”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MThjQubj)�”}”(hŒ9- http://www.freedesktop.org/wiki/Software/ModemManager/ ”h]”j)�”}”(hhh]”j)�”}”(hŒ7http://www.freedesktop.org/wiki/Software/ModemManager/ ”h]”hÞ)�”}”(hŒ6http://www.freedesktop.org/wiki/Software/ModemManager/”h]”jŠ)�”}”(hjph]”hŒ6http://www.freedesktop.org/wiki/Software/ModemManager/”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”jpuh1j‰hjnubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MWhjjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjgubah}”(h]”h ]”h"]”h$]”h&]”jTjUuh1jh³hÇh´MWhjcubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´MWhjQubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjeubj)�”}”(hŒY"MBIM (Mobile Broadband Interface Model) Registry" - http://compliance.usb.org/mbim/ ”h]”(hÞ)�”}”(hŒ2"MBIM (Mobile Broadband Interface Model) Registry"”h]”hŒ6“MBIM (Mobile Broadband Interface Model) Registryâ€�”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MYhjžubj)�”}”(hŒ"- http://compliance.usb.org/mbim/ ”h]”j)�”}”(hhh]”j)�”}”(hŒ http://compliance.usb.org/mbim/ ”h]”hÞ)�”}”(hŒhttp://compliance.usb.org/mbim/”h]”jŠ)�”}”(hj½h]”hŒhttp://compliance.usb.org/mbim/”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”j½uh1j‰hj»ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M[hj·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj´ubah}”(h]”h ]”h"]”h$]”h&]”jTjUuh1jh³hÇh´M[hj°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´M[hjžubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjeubj)�”}”(hŒY"/sys/kernel/debug/usb/devices output format" - Documentation/driver-api/usb/usb.rst ”h]”(hÞ)�”}”(hŒ-"/sys/kernel/debug/usb/devices output format"”h]”hŒ1“/sys/kernel/debug/usb/devices output formatâ€�”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M]hjëubj)�”}”(hŒ'- Documentation/driver-api/usb/usb.rst ”h]”j)�”}”(hhh]”j)�”}”(hŒ%Documentation/driver-api/usb/usb.rst ”h]”hÞ)�”}”(hŒ$Documentation/driver-api/usb/usb.rst”h]”hŒ$Documentation/driver-api/usb/usb.rst”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M_hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubah}”(h]”h ]”h"]”h$]”h&]”jTjUuh1jh³hÇh´M_hjýubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´M_hjëubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjeubj)�”}”(hŒS"/sys/bus/usb/devices/.../descriptors" - Documentation/ABI/stable/sysfs-bus-usb”h]”(hÞ)�”}”(hŒ&"/sys/bus/usb/devices/.../descriptors"”h]”hŒ*“/sys/bus/usb/devices/.../descriptorsâ€�”…”�”}”(hj2 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mahj. ubj)�”}”(hŒ(- Documentation/ABI/stable/sysfs-bus-usb”h]”j)�”}”(hhh]”j)�”}”(hŒ&Documentation/ABI/stable/sysfs-bus-usb”h]”hÞ)�”}”(hjI h]”hŒ&Documentation/ABI/stable/sysfs-bus-usb”…”�”}”(hjK h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MchjG ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjD ubah}”(h]”h ]”h"]”h$]”h&]”jTjUuh1jh³hÇh´Mchj@ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´Mchj. ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjeubeh}”(h]”h ]”h"]”h$]”h&]”Œenumtype”Œarabic”Œprefix”hŒsuffix”Œ)”uh1jchj_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³hÇh´MBhjNh²hubeh}”(h]”Œ references”ah ]”h"]”Œ references”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´M@ubeh}”(h]”Œ4cdc-mbim-driver-for-cdc-mbim-mobile-broadband-modems”ah ]”h"]”Œ6cdc_mbim - driver for cdc mbim mobile broadband modems”ah$]”h&]”uh1hÈhhh²hh³hÇh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÇuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)�”}”(hÍNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”j´ Œerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÇŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”Œnameids”}”(jŽ j‹ jâjßjÚj×jjjþjûjÈjÅjjjgj­jªjÔjÑjj jHjEj}jzjÀj½jKjHjjýjmjjjljijj jCj@j† jƒ uŒ nametypes”}”(jŽ ‰jâ‰jÚ‰j‰jþ‰jȉjj‰j­‰jÔ‰j‰jH‰j}‰jÀ‰jK‰j‰jm‰jl‰j‰jC‰j† ‰uh}”(j‹ hÊjßhíj×j jjåjûjÚjÅj jgjjªjmjÑj°j j×jEjjzjKj½j€jHjËjýjÜjjjjijpj joj@jjƒ jNuŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.