├── LICENSE ├── README.md ├── cdc-acm.ko ├── ch341.ko ├── cp210x.ko ├── installCDCACM.sh ├── installCH341.sh └── installCP210x.sh /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Jetsonhacks 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | 24 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # installACMModule 2 | MIT License 3 | 4 | Copyright (c) 2017-2018 Jetsonhacks 5 | 6 | There are scripts in this repository which install USB kernel modules which are not in the L4T 28.1 build. The modules: 7 | 8 | 12 | 13 |

cdc-acm kernel module

14 | Install the CDC ACM Module for the Jetson TX1 or Jetson TX2 Development Kit 15 | 16 | This script adds a module for USB Host functions to support Communication Device Class (CDC) Abstract Control Module (ACM) USB Devices. 17 | 18 | Typically these USB devices report as ttyACM* (where * is an integer). ACM devices have a lineage that goes back to modems and other network types of devices. However, many USB devices (such as an Arduino) are implemented using this simple USB protocol. The stock L4T 28.1 kernel does not have a CDC ACM module built in to the kernel, or as a separate module. This script adds cdc-acm.ko as a module so that such devices can be accessed through ttyACM*. 19 | 20 | To install: 21 | 22 | $ sudo ./installCDCACM.sh 23 | 24 |

cp210x USB to serial converter

25 | This script install the CP210x USB to serial converter module. There are several different types of USB to serial converters (FTDI is built into the L4T 28.1 kernel), the CP210x is used by devices such as the RP-LIDAR products 26 | 27 |

ch341

28 | This script install the CH-341 USB to serial converter module. There are several different types of USB to serial converters (FTDI is built into the L4T 28.1 kernel), this is the CH-341 which is used by many Arduino clones. 29 | 30 | 31 |

Notes

32 | These scripts expect a stock kernel, kernel version 4.4.38-tegra 33 | 34 | More than likely, you will need to replug the USB device for it to be detected properly after installing the kernel module. 35 | 36 | These scripts check the version magic of the module and compares it to the kernel version running on the machine. If the two do not match, the user is asked if they still want to continue the installation. If the two match, the module is installed. 37 | 38 | Note that on a version mismatch, the user can still install the module. However, some extra steps may be needed after the installation to get the module installed fully. The steps are not covered here, but should be readily available elsewhere. 39 | 40 | These scripts are for L4T 28.1. L4T version 28.2 includes cp210x and cdc-acm modules. 41 | 42 |

Release Notes

43 |

February, 2018

44 | Add cp210x and ch341 modules and install scripts 45 | 46 |

November, 2017

47 | Initial Release 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /cdc-acm.ko: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jetsonhacks/installACMModule/1d0f69c86d7233cb8ede605b29e502019b0135a1/cdc-acm.ko -------------------------------------------------------------------------------- /ch341.ko: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jetsonhacks/installACMModule/1d0f69c86d7233cb8ede605b29e502019b0135a1/ch341.ko -------------------------------------------------------------------------------- /cp210x.ko: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jetsonhacks/installACMModule/1d0f69c86d7233cb8ede605b29e502019b0135a1/cp210x.ko -------------------------------------------------------------------------------- /installCDCACM.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Install the cdc-acm module 3 | # First, does the module version magic match the current kernel version? 4 | 5 | MAGICVERSION=$(modinfo cdc-acm.ko | grep vermagic) 6 | MODULEVERSION=$(echo $MAGICVERSION | cut -d " " -f 2) 7 | KERNELVERSION=$(uname -r) 8 | if [ "$MODULEVERSION" == "$KERNELVERSION" ] 9 | then 10 | echo "Kernel and Module Versions Match; Installing ..." 11 | else 12 | echo "The Kernel version does not match the Module Version" 13 | echo "Kernel Version: " $KERNELVERSION 14 | echo "Module Version: " $MODULEVERSION 15 | while true; do 16 | read -p "Would you still like to install the module? [Y/n] " response 17 | case $response in 18 | [Yy]* ) break ;; 19 | [Nn]* ) exit;; 20 | * ) echo "Please answer Yes or no. " ;; 21 | esac 22 | done 23 | # The module version did not match the kernel version, but user selected to install anyway 24 | echo "You may have to force the module to be inserted, i.e. " 25 | echo "$ sudo modprobe -f cdc-acm" 26 | fi 27 | # Install the cdc-acm module 28 | # Make sure that the drivers/usb/class directory exists 29 | INSTALLDIRECTORY=/lib/modules/$(uname -r)/kernel/drivers/usb/class 30 | sudo mkdir -p "$INSTALLDIRECTORY" 31 | # Then copy over the module file 32 | sudo cp -v cdc-acm.ko $INSTALLDIRECTORY 33 | sudo depmod -a 34 | echo "Installed cdc-acm Module" 35 | 36 | 37 | -------------------------------------------------------------------------------- /installCH341.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Install the CH341 module 3 | # First, does the module version magic match the current kernel version? 4 | 5 | MAGICVERSION=$(modinfo ch341.ko | grep vermagic) 6 | MODULEVERSION=$(echo $MAGICVERSION | cut -d " " -f 2) 7 | KERNELVERSION=$(uname -r) 8 | if [ "$MODULEVERSION" == "$KERNELVERSION" ] 9 | then 10 | echo "Kernel and Module Versions Match; Installing ..." 11 | else 12 | echo "The Kernel version does not match the Module Version" 13 | echo "Kernel Version: " $KERNELVERSION 14 | echo "Module Version: " $MODULEVERSION 15 | while true; do 16 | read -p "Would you still like to install the module? [Y/n] " response 17 | case $response in 18 | [Yy]* ) break ;; 19 | [Nn]* ) exit;; 20 | * ) echo "Please answer Yes or no. " ;; 21 | esac 22 | done 23 | # The module version did not match the kernel version, but user selected to install anyway 24 | echo "You may have to force the module to be inserted, i.e. " 25 | echo "$ sudo modprobe -f cp210x" 26 | fi 27 | # Install the ch341 module 28 | # Make sure that the drivers/usb/serial directory exists 29 | INSTALLDIRECTORY=/lib/modules/$(uname -r)/kernel/drivers/usb/serial 30 | sudo mkdir -p "$INSTALLDIRECTORY" 31 | # Then copy over the module file 32 | sudo cp -v ch341.ko $INSTALLDIRECTORY 33 | sudo depmod -a 34 | echo "Installed ch341 Module" 35 | 36 | 37 | -------------------------------------------------------------------------------- /installCP210x.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Install the CP210x module 3 | # First, does the module version magic match the current kernel version? 4 | 5 | MAGICVERSION=$(modinfo cp210x.ko | grep vermagic) 6 | MODULEVERSION=$(echo $MAGICVERSION | cut -d " " -f 2) 7 | KERNELVERSION=$(uname -r) 8 | if [ "$MODULEVERSION" == "$KERNELVERSION" ] 9 | then 10 | echo "Kernel and Module Versions Match; Installing ..." 11 | else 12 | echo "The Kernel version does not match the Module Version" 13 | echo "Kernel Version: " $KERNELVERSION 14 | echo "Module Version: " $MODULEVERSION 15 | while true; do 16 | read -p "Would you still like to install the module? [Y/n] " response 17 | case $response in 18 | [Yy]* ) break ;; 19 | [Nn]* ) exit;; 20 | * ) echo "Please answer Yes or no. " ;; 21 | esac 22 | done 23 | # The module version did not match the kernel version, but user selected to install anyway 24 | echo "You may have to force the module to be inserted, i.e. " 25 | echo "$ sudo modprobe -f cp210x" 26 | fi 27 | # Install the cp210x module 28 | # Make sure that the drivers/usb/serial directory exists 29 | INSTALLDIRECTORY=/lib/modules/$(uname -r)/kernel/drivers/usb/serial 30 | sudo mkdir -p "$INSTALLDIRECTORY" 31 | # Then copy over the module file 32 | sudo cp -v cp210x.ko $INSTALLDIRECTORY 33 | sudo depmod -a 34 | echo "Installed cp210x Module" 35 | 36 | 37 | --------------------------------------------------------------------------------