1      Scope of Document

This document describes how to write udev script, when enum usb device maybe produces several interfaces(/dev/ttyUSB*),

if we want to compatible serveral usb modules, udev script is very useful.when module insert or remove, spec udev script will

be called.example: this module have four port, we can enumerated to specific devices(/dev/ttyfdti1,/dev/ttyftdi1,/dev/ttyftdi2,/dev/ttyftdi3).

#add for ftdi usb-serial

ACTION=="add",KERNELS=="1-1.4:1.0",SUBSYSTEMS=="usb",DRIVERS=="ftdi_sio",SYMLINK+="ttyftdi0"

ACTION=="add",KERNELS=="1-1.4:1.1",SUBSYSTEMS=="usb",DRIVERS=="ftdi_sio",SYMLINK+="ttyftdi1"

ACTION=="add",KERNELS=="1-1.4:1.2",SUBSYSTEMS=="usb",DRIVERS=="ftdi_sio",SYMLINK+="ttyftdi2"

ACTION=="add",KERNELS=="1-1.4:1.3",SUBSYSTEMS=="usb",DRIVERS=="ftdi_sio",SYMLINK+="ttyftdi3"

#remove for ftdi usb-serial

ACTION=="remove",KERNELS=="1-1.4:1.0",SUBSYSTEMS=="usb",DRIVERS=="ftdi_sio",SYMLINK+="ttyftdi0"

ACTION=="remove",KERNELS=="1-1.4:1.1",SUBSYSTEMS=="usb",DRIVERS=="ftdi_sio",SYMLINK+="ttyftdi1"

ACTION=="remove",KERNELS=="1-1.4:1.2",SUBSYSTEMS=="usb",DRIVERS=="ftdi_sio",SYMLINK+="ttyftdi2"

ACTION=="remove",KERNELS=="1-1.4:1.3",SUBSYSTEMS=="usb",DRIVERS=="ftdi_sio",SYMLINK+="ttyftdi3"

2      Requiremen

2.1     Function Requirement

Custom private udev rules,compatible different hardware module.

2.2     Performance Requirement

NA

3      Hardware Overview

NA

4      Functional Description

4.1     Functional Block Diagram

NA

5      Porting

5.1     System configure

Reference: https://wiki.archlinux.org/index.php/Udev_(简体中文)

https://mirrors.edge.kernel.org/pub/linux/utils/kernel/hotplug/udev/udev.html

example1:

when ec20 module be enumed, it can emum five device interfaces, /dev/tty20ec0,

/dev/tty20ec1,/dev/tty4g,/dev/tty20ec3,/dev/tty20ec4.attention to when enum /dev/tty4g interface, it will run /bin/ifup mobile script to diag-up.

If all internet access modules, its diag port was enumed to /dev/tty4g, we can compible all internet access modules in openwrt rootfs.

# add for ec20

ACTION=="add", ATTRS{modalias}=="usb:v2C7Cp0125d0318dcEFdsc02dp01icFFiscFFipFFin00", ATTRS{bInterfaceNumber}=="00", SYMLINK="tty20ec0"

ACTION=="add", ATTRS{modalias}=="usb:v2C7Cp0125d0318dcEFdsc02dp01icFFisc00ip00in01", ATTRS{bInterfaceNumber}=="01", SYMLINK="tty20ec1"

ACTION=="add", ATTRS{modalias}=="usb:v2C7Cp0125d0318dcEFdsc02dp01icFFisc00ip00in02", ATTRS{bInterfaceNumber}=="02", SYMLINK="tty4g",RUN="/sbin/ifup mobile"

ACTION=="add", ATTRS{modalias}=="usb:v2C7Cp0125d0318dcEFdsc02dp01icFFisc00ip00in03", ATTRS{bInterfaceNumber}=="03", SYMLINK="tty20ec3"

ACTION=="add", ATTRS{modalias}=="usb:v2C7Cp0125d0318dcEFdsc02dp01icFFiscFFipFFin04", ATTRS{bInterfaceNumber}=="04", SYMLINK="tty20ec4"

# remove for ec20

ACTION=="remove", ATTRS{modalias}=="usb:v2C7Cp0125d0318dcEFdsc02dp01icFFiscFFipFFin00", ATTRS{bInterfaceNumber}=="00", SYMLINK="tty20ec0"

ACTION=="remove", ATTRS{modalias}=="usb:v2C7Cp0125d0318dcEFdsc02dp01icFFisc00ip00in01", ATTRS{bInterfaceNumber}=="01", SYMLINK="tty20ec1"

ACTION=="remove", ATTRS{modalias}=="usb:v2C7Cp0125d0318dcEFdsc02dp01icFFisc00ip00in02", ATTRS{bInterfaceNumber}=="02", SYMLINK="tty4g",RUN="/sbin/ifdown mobile"

ACTION=="remove", ATTRS{modalias}=="usb:v2C7Cp0125d0318dcEFdsc02dp01icFFisc00ip00in03", ATTRS{bInterfaceNumber}=="03", SYMLINK="tty20ec3"

ACTION=="remove", ATTRS{modalias}=="usb:v2C7Cp0125d0318dcEFdsc02dp01icFFiscFFipFFin04", ATTRS{bInterfaceNumber}=="04", SYMLINK="tty20ec4"

Example2:
        if you have two usb-serial modules, and you
want to distinguish between them, you can reference follow udev script methon:

#add
for ftdi usb-serial

ACTION=="add",KERNELS=="1-1.4:1.0",SUBSYSTEMS=="usb",DRIVERS=="ftdi_sio",SYMLINK+="ttyftdi0"

ACTION=="add",KERNELS=="1-1.4:1.1",SUBSYSTEMS=="usb",DRIVERS=="ftdi_sio",SYMLINK+="ttyftdi1"

ACTION=="add",KERNELS=="1-1.4:1.2",SUBSYSTEMS=="usb",DRIVERS=="ftdi_sio",SYMLINK+="ttyftdi2"

ACTION=="add",KERNELS=="1-1.4:1.3",SUBSYSTEMS=="usb",DRIVERS=="ftdi_sio",SYMLINK+="ttyftdi3"

#remove for ftdi usb-serial

ACTION=="remove",KERNELS=="1-1.4:1.0",SUBSYSTEMS=="usb",DRIVERS=="ftdi_sio",SYMLINK+="ttyftdi0"

ACTION=="remove",KERNELS=="1-1.4:1.1",SUBSYSTEMS=="usb",DRIVERS=="ftdi_sio",SYMLINK+="ttyftdi1"

ACTION=="remove",KERNELS=="1-1.4:1.2",SUBSYSTEMS=="usb",DRIVERS=="ftdi_sio",SYMLINK+="ttyftdi2"

ACTION=="remove",KERNELS=="1-1.4:1.3",SUBSYSTEMS=="usb",DRIVERS=="ftdi_sio",SYMLINK+="ttyftdi3"

Openwrt Udev Configure(3)的更多相关文章

  1. Openwrt WiFi Configure(1)

    1      Scope of Document This document describes how to custom wifi option 2      Requiremen 2.1     ...

  2. Openwrt VLAN Configure(2)

    1      Scope of Document This document describes vlan design on nodewrt2p 2      Requiremen 2.1     ...

  3. [Openwrt 项目开发笔记]:Openwrt平台搭建(一)补遗

    [Openwrt项目开发笔记]系列文章传送门:http://www.cnblogs.com/double-win/p/3888399.html 正文: 昨晚上熬夜写了[Openwrt项目开发笔记]:O ...

  4. [Openwrt 项目开发笔记]:Openwrt平台搭建(一)

    [Openwrt项目开发笔记]系列文章传送门:http://www.cnblogs.com/double-win/p/3888399.html 正文: 最近开始着手进行Openwrt平台的物联网网关设 ...

  5. openwrt 添加 应用(luci-application)

    openwrt 添加应用的几个步骤如下: (1)在目录 ./feeds/luci/applications 下添加要增加的应用,譬如 "luci-test" (2)里面应该包含以下 ...

  6. [Openwrt 项目开发笔记]:Openwrt必要设置(二)

    [Openwrt项目开发笔记]系列文章传送门:http://www.cnblogs.com/double-win/p/3888399.html 正文: 前面的两篇blog中,我将如何搭建Openwrt ...

  7. ASP.NET Core 选项模式源码学习Options Configure(一)

    前言 ASP.NET Core 后我们的配置变得更加轻量级了,在ASP.NET Core中,配置模型得到了显著的扩展和增强,应用程序配置可以存储在多环境变量配置中,appsettings.json用户 ...

  8. udev规则(转)

    Writing udev rules by Daniel Drake (dsd)Version 0.74 The most recent version of this document can al ...

  9. 搭建OpenWrt开发环境(包括编译过程)

    OpenWrt是一个高度模块化.高度自动化的嵌入式linux发行版,其编译和安装过程比普通的linux发行版而言,要简单太多了.如果您是新手,您那恐惧的心大可放到肚子里,呵呵.对于新手来说最麻烦的恐怕 ...

随机推荐

  1. Delphi XE5 for Android (二)

    按照Embarcadero的说法:Windows平台只能使用VCL,Windows.iOS和Android都可以使用FMX,并且VCL和FMX不能同时在一个程序中.FMX的用法与VCL有一定的差异,先 ...

  2. Python3基础 函数 局部与全局变量同名,各管各的

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  3. BZOJ1355: [Baltic2009]Radio Transmission KMP

    Description 给你一个字符串,它是由某个字符串不断自我连接形成的. 但是这个字符串是不确定的,现在只想知道它的最短长度是多少. Input 第一行给出字符串的长度,1 < L ≤ 1, ...

  4. [Pytorch]深度模型的显存计算以及优化

    原文链接:https://oldpan.me/archives/how-to-calculate-gpu-memory 前言 亲,显存炸了,你的显卡快冒烟了! torch.FatalError: cu ...

  5. .Net Core集成Office Web Apps(二)

    想要使用OWA需要一台单独的服务器来部署,这对很多人造成困难.而写该文的目的是为了分享有个OWA的集成步骤,它不仅适用于.Net开发环境,其它语言也是一样的,只要实现了需要的服务接口.并且该文不局限与 ...

  6. kaggle CTR预估

    参考涛哥之前做过的CTR预估project,学习下CTR预估的相关知识:http://blog.csdn.net/hero_fantao/article/category/6877765 目标:本周末 ...

  7. POJ 1753 Flip Game(bfs+位压缩运算)

    http://poj.org/problem?id=1753 题意:一个4*4的棋盘,只有黑和白两种棋子,每次翻转一个棋子,并且其四周的棋子也跟着翻转,求棋盘全为黑或全为白时所需的最少翻转次数. 思路 ...

  8. python 重复元素排序

    def counting_sort(array1, max_val): m = max_val + count = [] * m for a in array1: # count occurences ...

  9. [ios][swift]文本框UITextField用法

    参考:http://www.hangge.com/blog/cache/detail_530.html

  10. [ogre]ogre::Animation

    参考:http://blog.csdn.net/leonwei/article/details/5819248 http://blog.csdn.net/debugconsole/article/de ...