您尚未登录。

楼主 #1 2017-11-02 09:47:49

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,236
积分: 9197

【转】一点一滴分析LinkIt Smart 7688 问题汇总

http://blog.csdn.net/hnhkj/article/details/50930483

一点一滴分析LinkIt Smart 7688 问题汇总
原创 2016年03月19日 12:39:06 标签:openwrt /mt7688 15825
定义

$ - 指定Ubuntu系统下命令

# - Openwrt下命令

1. 系统编译

1.1 .config文件

openwrt中,make menuconfig生成.config文件后,我们如何对.config中自定义的差异内容进行进行备份,方便移植到其它的系统中,这是一个问题。当然,有人说有很多简单的方法。但是这些都不是Openwrt开发着所希望看到的。对于Openwrt,开发团队创建了简单的工具scripts/diffconfig.sh`。我们可以采用这个工具进行配置保存工作。

有一个简单的方法,生成diff文件,然后通过git进行操作,这样我们可以对我们自己的openwrt进行定制备份了。

1.1.1 如何创建config diff文件

  $./scripts/diffconfig.sh > config.diff
1
1.1.2 如何使用config diff文件

  $cp config.diff .config
  $make defconfig
1
2
或者

  $cat config.diff >> .config
  $make defconfig
1
2
1.1.3 make meunconfig

  $make menuconfig
1
1.1.3 make kernel_menuconfig

$ make kernel_menuconfig
1
1.2 编译

系统编译很简单,直接在系统目录下运行make命令就可以了,如果想查看输出信息,可以在make后面增加V=s/V=99。如果是多核系统,可以在后面再增加j=2或其它数字,这代表同时有多个线程同时运行。这样可以提高编译速度。我的系统是单核的,我验证了一下没有任何改善。多核系统可以测试一下。

$ make V=99
1
1.2.1 linux核心编译

如果我们仅仅是想对linux核心包进行编译,可以采用下面的命令来进行。

$ make target/linux/{clean,prepare} V=s QUILT=1
1
1.2.2 package编译(以Madplay为例)

http://jphome.github.io/blog/2014/03/29/openwrt_sdk.html

全新编译madplay

  $ make package/feeds/packages/madplay/{clean,compile,install} V=s
  $ make package/feeds/packages/madplay/{compile,install} V=s
1
2
重新编译madplay

$ make package/feeds/packages/madplay/compile V=s
1
1.2.3 package安装(以Madplay为例)

madplay安装

复制ipk文件到openwrt系统(采用scp命令),然后通过opkg进行安装。

  $ scp bin/ramips/packages/packages/madplay-alsa_0.15.2b-4_ramips_24kec.ipk root@192.168.1.168:/tmp
1
安装madplay到openwrt

  # root@mylinkit:/tmp# opkg install madplay-alsa_0.15.2b-4_ramips_24kec.ipk
    Installing madplay-alsa (0.15.2b-4) to root...
    Configuring madplay-alsa.
1
2
3
MadPay源码修改

$ wget ftp://ftp.mars.org/pub/mpeg/madplay-0.15.2b.tar.gz
1
得到madplay源码,修改player.c,采用FIFO控制方式,然后编译madplay.

$ make package/feeds/packages/madplay/{compile,install} V=s
$ scp bin/ramips/packages/packages/madplay-alsa_0.15.2b-4_ramips_24kec.ipk root@192.168.1.168:/tmp

# opkg install madplay-alsa_0.15.2b-4_ramips_24kec.ipk
# madplay /Media/USB-A1/*.mp3
# echo f > /tmp/.madplayFIFO
1
2
3
4
5
6
创建madplayCon.c文件

# make package/feeds/packages/gogoo/ethMOH/{clean,compile,install} V=s
1
2
  KEY_PAUSE    = 'p',
  KEY_STOP     = 's',
  KEY_FORWARD  = 'f',
  KEY_BACK     = 'b',
  KEY_TIME     = 't',
  KEY_QUIT     = 'q',
  KEY_INFO     = 'i',
  KEY_GAINDECR = '-',
  KEY_GAININCR = '+',
  KEY_GAINZERO = '_',
  KEY_GAININFO = '='
1
2
3
4
5
6
7
8
9
10
11
1.3 dts文件修改

1.3.1 按钮相关修改

MT7688按钮一组为32个,所以GPIO0组对应GPIO0-PIO32,GPIO1组对应GPIO32以上的引脚。

参考连接https://wiki.openwrt.org/doc/howto/hardware.button?s[]=button&s[]=hotplug

    gpio-keys-polled {
        compatible = "gpio-keys-polled";
        #address-cells = <1>;
        #size-cells = <0>;
        poll-interval = <20>;
        wps {
            label = "wps";
            gpios = <&gpio1 6 1>;     // GPIO38 wifi button
            linux,code = <0x211>;
        };
        key_playpause {
            label = "key_playpause";
            gpios = <&gpio0 15 1>;      // GPIO15-KEY_PLAY/Pause(S5)
            linux,code = <164>;
        };
        key_volumeup {
            label = "key_volumeup";
            gpios = <&gpio0 17 1>;      //GPIO17-KEY_VOL+(S7)
            linux,code = <115>;
        };
        key_volumedown {
            label = "key_volumedown";
            gpios = <&gpio0 18 1>;      //GPIO18-KEY_VOL-(S8)
            linux,code = <114>;
        };
        key_next {
            label = "key_next";
            gpios = <&gpio0 16 1>;      //GPIO16-KEY_NEXT(S6)
            linux,code = <0x197>;
        };
        key_previous {
            label = "key_previous";
            gpios = <&gpio0 14 1>;      //GPIO14-KEY_PRE(S4)
            linux,code = <0x19c>;
        };
    };
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
尖括号中的内容为标准按键代码,可以在linux/include/uapi/linux/input.h中查询到。

1.3.2 SD卡检测引脚电平修改

LinkIt smart7688的SD卡检测,默认是高电平。但是普通的SD卡是低电平。所以,要对dts进行修改。使用下面命令:

$ vi target/linux/ramips/dts/LINKIT7688.dts
1
修改前:

    sdhci@10130000 {
        status = "okay";
        mediatek,cd-high;
//      mediatek,cd-poll;
    };
1
2
3
4
5
修改后:

        sdhci@10130000 {
        status = "okay";
        mediatek,cd-low;
//      mediatek,cd-poll;
    };
1
2
3
4
5
1.4 package创建

package的Makefile

PKG_NAME - The name of the package, as seen via menuconfig and ipkg
PKG_VERSION - The upstream version number that we’re downloading
PKG_RELEASE - The version of this package Makefile
PKG_LICENSE - The license(s) the package is available under, SPDX form.
PKG_LICENSE_FILE- file containing the license text
PKG_BUILD_DIR - Where to compile the package
PKG_SOURCE - The filename of the original sources
PKG_SOURCE_URL - Where to download the sources from (directory)
PKG_MD5SUM - A checksum to validate the download
PKG_CAT - How to decompress the sources (zcat, bzcat, unzip)
PKG_BUILD_DEPENDS - Packages that need to be built before this package, but are not required at runtime. Uses the same syntax as DEPENDS below.
PKG_INSTALL - Setting it to “1” will call the package’s original “make install” with prefix set to PKG_INSTALL_DIR
PKG_INSTALL_DIR - Where “make install” copies the compiled files
PKG_FIXUP - See below
PKG_SOURCE_PROTO - the protocol to use for fetching the sources (git, svn)
PKG_REV - the svn revision to use, must be specified if proto is “svn”
PKG_SOURCE_SUBDIR - must be specified if proto is “svn” or “git”, e.g. “PKG_SOURCE_SUBDIR:=(PKG_NAME)−(PKG_VERSION)”
PKG_SOURCE_VERSION - must be specified if proto is “git”, the commit hash to check out
PKG_CONFIG_DEPENDS - specifies which config options depend on this package being selected
SECTION - The type of package (currently unused) //包的类型
CATEGORY - Which menu it appears in menuconfig //menuconfig的哪一个菜单显示
TITLE - A short description of the package //包的简短描述
DESCRIPTION - (deprecated) A long description of the package //报的一个长描述
URL - Where to find the original software // 那里找到源软件
MAINTAINER - (required for new packages) Who to contact concerning the package // 包的联系
DEPENDS - (optional) Which packages must be built/installed before this package. See below for the syntax. // 哪些包需要必须先编译/安装
PKGARCH - (optional) Set this to “all” to produce a package with “Architecture: all”
USERID - (optional) a username:groupname pair to create at package installation time.
1.5 JFFS2-Journalling Flash File System Version2

JFFS2全名是 Journalling Flash File System Version2,是Redhat公司开发的闪存文件系统[1],其前身是JFFS, 最早只支持NOR Flash, 自2.6版以后开始支持NAND Flash, 极适合使用于嵌入式系统。https://zh.wikipedia.org/wiki/JFFS2

1.5 如何创建自己的板子支持

增加mt7688支持
参考CC代码:(CC-2015/10/19 18:19:18-SHA-1: 3d98b29a3d0aa854fad712a92ace42ad06e92d6b)
* 修改target\linux\ramips\Makefile文件,增加mt7688支持
* 修改target\linux\ramips\modules.mk文件,增加TARGET_ramips_mt7688支持
* 创建target\linux\ramips\mt7688\config-3.18文件
* 创建target\linux\ramips\mt7688\profiles\00-default.mk文件
* 创建target\linux\ramips\mt7688\target.mk文件

增加LinkIt Smart7688支持
参考CC代码:(CC-2015/10/19 18:19:22-SHA-1: 8829dee8871e45c675a4bd4036c188c6d0f5645b)
* 在package\boot\uboot-envtools\files\ramips添加linkits7688板名支持
* 在target\linux\ramips\base-files\etc\board.d\02_network添加linkits7688支持
* 在target\linux\ramips\base-files\lib\ramips.sh中添加linkits7688支持
* 在target\linux\ramips\base-files\lib\upgrade\platform.sh中添加linkits7688支持
* 增加target\linux\ramips\dts\LINKIT7688.dts文件
* 修改target\linux\ramips\image\Makefile文件
* 增加target\linux\ramips\mt7688\profiles\01-mediatek.mk文件

参考windora
* 修改target\linux\ramips\base-files\etc\board.d\02_network
* 修改target\linux\ramips\base-files\lib\ramips.sh
* 修改target\linux\ramips\base-files\lib\upgrade\platform.sh
* 修改target\linux\ramips\image\Makefile
* 创建一个*.mk文件到target\linux\ramips\mt7688\profiles\目录下
* 创建一个example.dts文件到target\linux\ramips\dts\目录下

root@mylinkit:~# cat /proc/cpuinfo
system type             : MediaTek MT7688 ver:1 eco:2
machine                 : MediaTek LinkIt Smart 7688
processor               : 0
cpu model               : MIPS 24KEc V5.5
BogoMIPS                : 385.84
wait instruction        : yes
microsecond timers      : yes
tlb_entries             : 32
extra interrupt vector  : yes
hardware watchpoint     : yes, count: 4, address/irw mask: [0x0ffc, 0x0ffc, 0x0ffb, 0x0ffb]
isa                     : mips1 mips2 mips32r1 mips32r2
ASEs implemented        : mips16 dsp
shadow register sets    : 1
kscratch registers      : 0
package                 : 0
core                    : 0
VCED exceptions         : not available
VCEI exceptions         : not available
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
1.6 rpcd - (OpenWrt ubus RPC backend server)

1.7 patch

http://blog.csdn.net/wwx0715/article/details/25160361

$ quilt --help
用法:quilt [--trace[=verbose]] [--quiltrc=XX] command [-h] ...
       quilt --version
命令是:
        add       fold    new       remove    top
        annotate  fork    next      rename    unapplied
        applied   graph   patches   revert    upgrade
        delete    grep    pop       series
        diff      header  previous  setup
        edit      import  push      shell
        files     mail    refresh   snapshot

Global options:

--trace
        Runs the command in bash trace mode (-x). For internal debugging.

--quiltrc file
        Use the specified configuration file instead of ~/.quiltrc (or
        /etc/quilt.quiltrc if ~/.quiltrc does not exist).  See the pdf
        documentation for details about its possible contents.  The
        special value "-" causes quilt not to read any configuration
        file.

--version
        Print the version number and exit immediately.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
1.7.1 准备quilt配置

$ cd ~
1
cat > ~/.quiltrc <<EOF
QUILT_DIFF_ARGS="--no-timestamps --no-index -p ab --color=auto"
QUILT_REFRESH_ARGS="--no-timestamps --no-index -p ab"
QUILT_PATCH_OPTS="--unified"
QUILT_DIFF_OPTS="-p"
EDITOR="nano"
EOF
1
2
3
4
5
6
7
**1.7.2

$ cd ~/openwrt/openwrt_ethMOH/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7688/linux-3.18.29/
$ quilt series
$ quilt new platform/502-alsa.patch
$ quilt edit sound/soc/codecs/wm8960.c
$ quilt diff
$ quilt refresh
$ cd ../../../../
$ make target/linux/update package/index V=s
1
2
3
4
5
6
7
8
修改存在的patch

$ quilt push platform/502-alsa.patch
$ quilt edit sound/soc/codecs/wm8960.c
$ quilt diff
$ quilt refresh
$ cd ../../../../

$ make target/linux/update V=s  //民间更新patch到target/linux/ramips/patches-xxx方法
/$ make target/linux/update package/index V=s //官方更新patch到target/linux/ramips/patches-xxx方法

$ make target/linux/{clean,prepare} V=s QUILT=1
1
2
3
4
5
6
7
8
9
10
1.8 Makefile

$? - 当前目标所依赖的文件列表中比当前目标文件还要新的文件
$@ - 当前目标名字
$< - 当前依赖文件的名字
$* - 不包括后缀名的当前依赖文件的名字
1
2
3
4
1.9 WM8960声卡

Linkit的默认的声卡是WM8960,该声卡为I2S接口。Linkit默认WM8960使用的为外部晶振提供时钟频率。所以如果我们希望采用MT7688的REF_CLK0信号作为WM8960的时钟信号的话,我们就需要对MTK的配置文件进行一些修改。
具体的修改可以参考https://github.com/hnhkj/CC15.05.git的代码。

1.10 USB声卡CM108

https://wiki.openwrt.org/doc/howto/usb.audio?s[]=sound

1.11 wps 功能 (don’t support)

http://labs.mediatek.com/forums/posts/list/4850.page

1.12 init.d/rc.d开机自动运行

参考文档:https://wiki.openwrt.org/doc/techref/initscripts

启动方法:
1,创建脚本到 init.d(具体参考原来文档)。
2,开机自动运行./etc/init.d/example enable。
3, 使能自动运行可以在/etc/rc.d/ 下查找到连接

1.13 eclipse

http://downloads.openwrt.org/docs/eclipse.pdf


2. 系统配置

2.1 MTD

参考连接:https://wiki.openwrt.org/doc/techref/mtd

root@mylinkit:~# mtd
Usage: mtd [<options> ...] <command> [<arguments> ...] <device>[:<device>...]

The device is in the format of mtdX (eg: mtd4) or its label.
mtd recognizes these commands:
        unlock                  unlock the device
        refresh                 refresh mtd partition
        erase                   erase all data on device
        verify <imagefile>|-    verify <imagefile> (use - for stdin) to device
        write <imagefile>|-     write <imagefile> (use - for stdin) to device
        jffs2write <file>       append <file> to the jffs2 partition on the device
        fixseama                fix the checksum in a seama header on first boot
Following options are available:
        -q                      quiet mode (once: no [w] on writing,
                                           twice: no status messages)
        -n                      write without first erasing the blocks
        -r                      reboot after successful command
        -f                      force write without trx checks
        -e <device>             erase <device> before executing the command
        -d <name>               directory for jffs2write, defaults to "tmp"
        -j <name>               integrate <file> into jffs2 data when writing an image
        -s <number>             skip the first n bytes when appending data to the jffs2 partiton, defaults to "0"
        -p                      write beginning at partition offset
        -l <length>             the length of data that we want to dump

Example: To write linux.trx to mtd4 labeled as linux and reboot afterwards
         mtd -r write linux.trx linux
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2.1.1 如何显示MTD状态
  root@mylinkit:/tmp# cat /proc/mtd
  dev:    size   erasesize  name
  mtd0: 00030000 00010000 "u-boot"
  mtd1: 00010000 00010000 "u-boot-env"
  mtd2: 00010000 00010000 "factory"
  mtd3: 00fb0000 00010000 "firmware"
  mtd4: 0011a791 00010000 "kernel"
  mtd5: 00e9586f 00010000 "rootfs"
  mtd6: 00100000 00010000 "rootfs_data"
1
2
3
4
5
6
7
8
9
2.1.2 dd命令:/bin/dd
读取mtd2内的数据内容,mac地址
  # dd bs=1 skip=3 count=6 if=/dev/mtd2 2>/dev/null | hexdump
1
参考文档:linkit-smart-7688-feed\mtk-linkit\files\etc\uci-defaults\51_linkit_config - Line30:

MAC=$(dd bs=1 skip=7 count=3 if=/dev/mtd2 2>/dev/null | hexdump -v -n 3 -e '3/1 "%02X"'
1
2.1.3 入如何写firmware到flash.
   # cd /tmp
   # wget http://www.example.org/original_firmware.bin
   # mtd -r write /tmp/original_firmware.bin firmware
1
2
3
2.1.4 备份MTD2/factory信息
  # dd if=/dev/mtd2 of=/tmp/factory.bin
1
2.1.5 写factory.bin到mtd2
  # mtd -r write /tmp/factory.bin factory
1
注意:如果命令返回不能写入MTD2,可能是由于你的系统设定了禁止写该区域的权限。我们可以通过修改target/linux/ramips/dts/LINKIT7688.dts,注销禁止代码。这样就可以将数据写入到MTD2区域了。

I know that we can modify LINKIT7688 file to allow mtd command modify mtd2's data.

/target/linux/ramips/dts/LINKIT7688
line82-86:
factory: partition@40000 {
label = "factory";
reg = <0x40000 0x10000>;
read-only;
};
delete read-only.
1
2
3
4
5
6
7
8
9
10
fw_printenv命令:/usr/sbin/fw_printenv
参考文档:linkit-smart-7688-feed\mtk-linkit\files\etc\init.d\linkit

Line15:

SEQ=fw_printenv -n wifi_seq
2.2 用SD卡扩展空间(未验证)

参考: http://labs.mediatek.com/forums/posts/list/4121.page

Yes!you can mount tf card as overlay
1.install block-mount e2fsprogs kmod-fs-ext4
2.mkfs.ext4 /dev/mmcblk0
3.block detect > /etc/config/fstab
4.vi etc/config/fstab
modify option 'target' '/overlay'
modify option 'enable' '1'
5.reboot,use df -h check
1
2
3
4
5
6
7
8
2.3 ifconfig 相关参数

状态:Ethernet0 连接PC,Wifi连接Router (状态非常好)

ifconfig
apcli0    Link encap:Ethernet  HWaddr 9E:65:F9:0B:18:55
          inet addr:192.168.1.104  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::9c65:f9ff:fe0b:1855/64 Scope:Link
          UP BROADCAST RUNNING 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:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

br-lan    Link encap:Ethernet  HWaddr 9C:65:F9:1B:10:27
          inet addr:192.168.100.1  Bcast:192.168.100.255  Mask:255.255.255.0
          inet6 addr: fe80::9e65:f9ff:fe1b:1027/64 Scope:Link
          inet6 addr: fdef:dd3c:f1e1::1/60 Scope:Global
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:478 errors:0 dropped:0 overruns:0 frame:0
          TX packets:340 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:45279 (44.2 KiB)  TX bytes:46562 (45.4 KiB)

eth0      Link encap:Ethernet  HWaddr 9C:65:F9:1B:10:27
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:525 errors:0 dropped:0 overruns:0 frame:0
          TX packets:307 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:70666 (69.0 KiB)  TX bytes:46599 (45.5 KiB)
          Interrupt:5

eth0.1    Link encap:Ethernet  HWaddr 9C:65:F9:1B:10:27
          inet6 addr: fe80::9e65:f9ff:fe1b:1027/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:26 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:5911 (5.7 KiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:1269 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1269 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:88230 (86.1 KiB)  TX bytes:88230 (86.1 KiB)

ra0       Link encap:Ethernet  HWaddr 9C:65:F9:1B:18:55
          inet6 addr: fe80::9e65:f9ff:fe1b:1855/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:11176 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2457 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:2248608 (2.1 MiB)  TX bytes:42335 (41.3 KiB)
          Interrupt:6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
2.4 network 配置

config interface 'loopback'
    option ifname 'lo'
    option proto 'static'
    option ipaddr '127.0.0.1'
    option netmask '255.0.0.0'

config globals 'globals'
    option ula_prefix 'fd01:80d1:1f98::/48'

config interface 'lan'
    option ifname 'eth0'
    option force_link '1'
    option type 'bridge'
    option proto 'static'
    option netmask '255.255.255.0'
    option ip6assign '60'
    option ipaddr '192.168.100.1'
    option macaddr '00:0c:43:e1:76:2a'

config switch
    option name 'switch0'
    option reset '1'
    option enable_vlan '0'

config interface 'wan'
    option proto 'dhcp'
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2.5 eeprom配置

eepromn内容可以在/lib/firmware/mt7628.eeprom中。

2.1 - Chip ID(0x00h)
2.2 - Layout Revision ID(0x02)
2.3 - WIFI MAC Address (0x04)
2.4 - WIFI MAC Address (0x28)
2.5 - WIFI MAC Address (0x2E)
2.6 - NIC Configuration 0 (0x34)
2.7 - NIC Configuration 1 (0x36)
2.8 - Country Region Code for 2.4G band (0x39)
2.9 - LED Mode (0x3B)
2.10 - NIC COnfiguration 2 (0x42)
2.11 - RSSI Offset for 2.4G band (0x46)
2.12 - 20M/40M BW Power Delta for 2.4G band (0x50)
2.13 - Temp. Sensor Calibation (0x55)
2.14 - 2.4G Tx0 Power Slope/offset (0x56~0x57)
2.15 - 2.4G Tx0 Target Power (0x58)
2.16 - 2.4G Tx0 Power Low/Middle/High Channel (0x59)
2.17 - 2.4G Tx1 Power Slope/Offset (0x5C~0x5D)
2.18 - 2.4G Tx1 Target Power (0x5E)
2.19 - 2.4G Tx1 Power Offset Low/Middle/High Channel (0x5F~0x61)
2.20 - 2.4G Tx rate power configuration (0xA0~0xBF)
2.21 - External LNA (0xC0)
2.22 - 2.4GHz Step Number (0xC6)
2.23 - Frequency offset (0xF4~0xF6)
2.24 - Reserved for Customer (0x140~0x1EF)
2.6 Sysupgrade

https://wiki.openwrt.org/doc/howto/generic.sysupgrade

与opkg, mtd 等相比, sysupgrade 仅仅是个shell脚本: /sbin/sysupgrade 诣在更容易的实现系统更新.

timezone //时区

时区设置保存在/tmp/TZ中。

root@mylinkit:/tmp# cat TZ
UTC
1
2
2.7 uhttpd

https://wiki.openwrt.org/doc/howto/http.uhttpd

2.8 修改Linkit_Smart_7688默认的SSID

在mtk-linkit\files\etc\uci-defaults\51\_linkit\_config文件中,默认是读取wifi MAC address的后3个字节,加载到字符串LiniIt_Smart_7688_的后面,根据MAC地址的唯一性,形成一个唯一的SSID地址。如果我们想修改该SSID的话,可以在这个文件中进行修改。又或者配置SSID到uboot环境变量中,形成自己的SSID。这部分实现可以参考lks7688.cfg部分。如果系统在uboot中设置了SSID的话,系统将显示该SSID。如果没有设置的话,系统将设置该文件配置的SSID。

[ -n "${SSID}" ] || { \
  MAC=$(dd bs=1 skip=7 count=3 if=/dev/mtd2 2>/dev/null | hexdump -v -n 3 -e '3/1 "%02X"')
  SSID=LinkIt_Smart_7688_${MAC}
}
1
2
3
4
2.9 修改Linkit_Smart_7688的版本号

Linkit_Smart_7688默认拥有自己的版本号,该版本号定义在mtk-linkit\files\etc\uci-defaults\54_linkit_version文件中。

uci set system.@system[0].firmware_version=v0.9.3
1
2.10 修改Linkit_Smart_7688的主机名

Linkit_Smart_7688的主机名在mtk-linkit\files\etc\uci-defaults\51_linkit_config文件中定义,你可以通过修改这个文件来修改主机名。

uci set system.@system[-1].hostname="mylinkIt"
1
2.11 获得Linkit_Smart_7688的MAC地址

对于如何获取MAC地址,OpenWrt提供了详细的程序接口。可以参考\openwrt\package\base-files\files\lib\functions\system.sh文件,该文件包含的mac的操作函数。在很多的sh文档中都包含的对该文件的引用。

例如:mtk-linkit\files\etc\uci-defaults\51_linkit_config文件中的wan_mac获取。

wan_mac=$(mtd_get_mac_binary factory 4)
1
获取ap_mac地址(源自:mtk-linkit\files\etc\rc.button\wps
文件):

iwinfo ra0 info | grep Access | awk '{print $3}')
1
2.12 Linkit_Smart_7688默认模组的添加和删除

Linkit_Smart_7688默认添加了很多的模组,例如:python,node.js等。我们如何对默认的模组进行修改,添加或删除想要的模组呢。其实很简单,我们就是需要修改mtk-linkit\Makefile,在该文件中修改想要或不想要的模组。然后feed install它就可以了。当然,你会发现已经安装过的模组,在文件中删除后,编译后仍然会在firmware中,这是怎么回事呢?这是因为,在编译默认的Makefile的时候,系统通过feed已经将原来默认的模组添加进了.config。如果要删除它们,需要同feed来删除它们。然后,编译以后就不会出现了。

define Package/mtk-linkit
  TITLE:=MTK LinkIt Smart board support package
  HIDDEN:=1
  DEPENDS:=@TARGET_ramips_mt7688_LinkIt7688 \
    +gdbserver +curl +strace +coreutils +coreutils-stty \
    +avahi-nodbus-daemon +mountd +mjpg-streamer \
  +uhttpd +rpcd +rpcd-mod-iwinfo +git +git-http +samba36-server \
  +python +python-pyserial +python-pip +hidapi \
  +libmraa +libupm +node +node-hid +node-cylon-firmata +yunbridge \
  +luci +luci-theme-openwrt +luci-app-mjpg-streamer +luci-app-samba +luci-lib-json \
  +rpcd-mod-rpcsys +cgi-io +avrdude +spi-tools +uboot-envtools \
  +kmod-fs-vfat +kmod-fs-exfat +kmod-i2c-core +kmod-i2c-ralink \
  +kmod-nls-base +kmod-nls-cp437 +kmod-nls-iso8859-1 \
  +kmod-nls-iso8859-15 +kmod-nls-iso8859-2 +kmod-nls-utf8 \
  +kmod-sdhci-mt7620 +kmod-usb-storage \
  +kmod-video-core +kmod-video-uvc \
  +kmod-sound-core +kmod-sound-mtk +madplay-alsa +alsa-utils \
  +mtk-linkit-webui +mtk-sdk-wifi +tcpdump-mini

  CATEGORY:=Base system
  DEFAULT:=y
endef
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2.13 如果修改Linkit_Smart_7688默认opkg连接地址

ubuntu@ubuntu-System-Name:~/openwrt/openwrt_ethMOH$ cat feeds.conf.default
src-git packages https://github.com/openwrt/packages.git;for-15.05
src-git luci https://github.com/openwrt/luci.git;for-15.05
src-git routing https://github.com/openwrt-routing/packages.git;for-15.05
src-git telephony https://github.com/openwrt/telephony.git;for-15.05
src-git management https://github.com/openwrt-management/packages.git;for-15.05
#src-git targets https://github.com/openwrt/targets.git
#src-git oldpackages http://git.openwrt.org/packages.git
#src-svn xwrt http://x-wrt.googlecode.com/svn/trunk/package
#src-svn phone svn://svn.openwrt.org/openwrt/feeds/phone
#src-svn efl svn://svn.openwrt.org/openwrt/feeds/efl
#src-svn xorg svn://svn.openwrt.org/openwrt/feeds/xorg
#src-svn desktop svn://svn.openwrt.org/openwrt/feeds/desktop
#src-svn xfce svn://svn.openwrt.org/openwrt/feeds/xfce
#src-svn lxde svn://svn.openwrt.org/openwrt/feeds/lxde
#src-link custom /usr/src/openwrt/custom-feed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
该连接地址的修改主要修改一个文件mtk-linkit\files\etc\opkg\linkit.conf。我们可以通过修改这个文件中的文件指向你的opkg连接地址,然后编译。编译后出的OS就可以通过opkg install连接你的服务器了。当然,如果你不想使用Linkit_Smart_7688默认的opkg连接地址的话,你可以在mtk-linkit\files\etc\init.d\linkit文件中删除对linkit.conf的初始化部分,这样在OpenWrt启动的时候就不会讲linit.conf添加/etc/opkg/distfeeds.conf。

当然,如果你不想修改系统,只是在OpenWrt中修改opkg连接地址的话,那也很简单。你只要用vi命令修改/etc/opkg/distfeeds.conf文件就可以了。这也很简单。

2.14 如果修改Linkit_Smart_7688默认lan ipaddress.

默认的Lan IPAddress在OpenWrt的/etc/config/network文件中设置,如果想修改ip地址。可以在linkit-smart-7688-feed\mtk-linkit\files\etc\uci-defaults\51_linkit_config文件中进行修改。linkit-smart-7688-feed默认的Lan ipaddr 是 192.168.100.1。

2.15 如果修改Linkit_Smart_7688的GPIO11.

Linkit_Smart_7688的GPIO11引脚,默认用来锁定CL245A芯片的。该芯片是一个锁存器,用来提升MT7688的引脚输出功率和保护MT7688的引脚功能。但是,如果你不需要这个功能,希望将GPIO11引脚释放出来的话。你可以对源代码进行一些修改或者删除。MTK在linux中增加了一个驱动,用来驱动GPIO11引脚的。详细内容可以参考target\linux\ramips\patches-3.18\0200-linkit_bootstrap.patch文件。

2.16 aplay多声卡的使用

Linkit默认使用WM8960声卡,现在增加了一个USB声卡,声卡检测发现了该USB声卡。http://alsa.opensrc.org/MultipleCards

2.16.1 aplay查询有效声卡 aplay -l

root@mylinkit:/# aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: I2S [MTK APSoC I2S], device 0: WMserious PCM wm8960-hifi-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: Set [C-Media USB Headphone Set], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
1
2
3
4
5
6
7
8
2.16.2 用指定的声卡播放 aplay -Dhw:x (x=0,x=1)

root@mylinkit:/# aplay -Dhw:1 /Media/SD-P1/*.wav
Playing WAVE '/Media/SD-P1/1.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
1
2
2.16.3 aply -h

root@mylinkit:/# aplay -h
Usage: aplay [OPTION]... [FILE]...

-h, --help              help
    --version           print current version
-l, --list-devices      list all soundcards and digital audio devices
-L, --list-pcms         list device names
-D, --device=NAME       select PCM by name
-q, --quiet             quiet mode
-t, --file-type TYPE    file type (voc, wav, raw or au)
-c, --channels=#        channels
-f, --format=FORMAT     sample format (case insensitive)
-r, --rate=#            sample rate
-d, --duration=#        interrupt after # seconds
-M, --mmap              mmap stream
-N, --nonblock          nonblocking mode
-F, --period-time=#     distance between interrupts is # microseconds
-B, --buffer-time=#     buffer duration is # microseconds
    --period-size=#     distance between interrupts is # frames
    --buffer-size=#     buffer duration is # frames
-A, --avail-min=#       min available space for wakeup is # microseconds
-R, --start-delay=#     delay for automatic PCM start is # microseconds
                        (relative to buffer size if <= 0)
-T, --stop-delay=#      delay for automatic PCM stop is # microseconds from xrun
-v, --verbose           show PCM structure and setup (accumulative)
-V, --vumeter=TYPE      enable VU meter (TYPE: mono or stereo)
-I, --separate-channels one file for each channel
-i, --interactive       allow interactive operation from stdin
-m, --chmap=ch1,ch2,..  Give the channel map to override or follow
    --disable-resample  disable automatic rate resample
    --disable-channels  disable automatic channel conversions
    --disable-format    disable automatic format conversions
    --disable-softvol   disable software volume control (softvol)
    --test-position     test ring buffer position
    --test-coef=#       test coefficient for ring buffer position (default 8)
                        expression for validation is: coef * (buffer_size / 2)
    --test-nowait       do not wait for ring buffer - eats whole CPU
    --max-file-time=#   start another output file when the old file has recorded
                        for this many seconds
    --process-id-file   write the process ID here
    --use-strftime      apply the strftime facility to the output file name
    --dump-hw-params    dump hw_params of the device
    --fatal-errors      treat all errors as fatal
Recognized sample formats are: S8 U8 S16_LE S16_BE U16_LE U16_BE S24_LE S24_BE U24_LE U24_BE S32_LE S32_BE U32_LE U32_BE FLOAT_LE FLOAT_BE FLOAT64_LE FLOAT64_BE IEC958_SUBFRAME_LE IEC958_SUBFRAME_BE MU_LAW A_LAW IMA_ADPCM MPEG GSM SPECIAL S24_3LE S24_3BE U24_3LE U24_3BE S20_3LE S20_3BE U20_3LE U20_3BE S18_3LE S18_3BE U18_3LE U18_3BE G723_24 G723_24_1B G723_40 G723_40_1B DSD_U8 DSD_U16_LE
Some of these may not be available on selected hardware
The available format shortcuts are:
-f cd (16 bit little endian, 44100, stereo)
-f cdr (16 bit big endian, 44100, stereo)
-f dat (16 bit little endian, 48000, stereo)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
2.16.4 arecord & aplay test

arecord -f cd -t wav -M /Media/USB-A1/my_recording.wav
aplay -M my_recording.wav
1
2
2.16.5 参考连接:

http://alsa.opensrc.org/

http://www.cnblogs.com/cslunatic/p/3227655.html
http://blog.chinaunix.net/uid-26588712-id-3054726.html
https://wiki.archlinux.org/index.php/Advanced_Linux_Sound_Architecture_%28%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87%29#.E8.AE.BE.E7.BD.AE.E9.BB.98.E8.AE.A4.E5.A3.B0.E5.8D.A1

2.17 madplay

http://www.crystalradio.cn/thread-466848-1-1.html
http://blog.csdn.net/fengliang191/article/details/19763579

madplay默认按键

The keyboard controls are documented in the man page for madplay:
    P  Pause; press any key to resume.
    S  Stop; press any key to replay the  current  file
       from the beginning.
    F  Forward; advance to the next file.
    B  Back;  replay  the  current  file, unless it has
       been playing for less than 4 seconds,  in  which
       case replay the previous file.
    T  Time display; change the time display mode. This
       only works with  -v  (--verbose).   The  display
       mode alternates among overall playing time, cur-
       rent time remaining, and current playing time.
    +  Increase gain; increase the audio output gain by
       0.5 dB.
    -  Decrease gain; decrease the audio output gain by
       0.5 dB.
    Q  Quit; stop decoding and exit.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

root@mylinkit:~# madplay -h
Usage: madplay [OPTIONS] FILE [...]
Decode and play MPEG audio FILE(s).

Verbosity:
  -v, --verbose                show status while decoding
  -q, --quiet                  be quiet but show warnings
  -Q, --very-quiet             be quiet and do not show warnings
      --display-time=MODE      use default verbose time display MODE
                                 (remaining, current, overall)

Decoding:
      --downsample             reduce sample rate 2:1
  -i, --ignore-crc             ignore CRC errors
      --ancillary-output=PATH  write ancillary data to PATH

Audio output:
  -o, --output=[TYPE:]PATH     write output to PATH with format TYPE (below)
  -b, --bit-depth=DEPTH        request DEPTH bits per sample
  -R, --sample-rate=HERTZ      request HERTZ samples per second
  -d, --no-dither              do not dither output PCM samples
      --fade-in[=DURATION]     fade-in songs over DURATION (default 0:05)
  -a, --attenuate=DECIBELS     attenuate signal by DECIBELS (-)
  -a, --amplify=DECIBELS       amplify signal by DECIBELS (+)
  -A, --adjust-volume=DECIBELS override per-file volume adjustments
  -G, --replay-gain[=PROFILE]  enable Replay Gain volume adjustments using
                                 PROFILE (radio, audiophile)

Channel selection:
  -1, --left                   output first (left) channel only
  -2, --right                  output second (right) channel only
  -m, --mono                   mix left and right channels for monaural output
  -S, --stereo                 force stereo output

Playback:
  -s, --start=TIME             skip to begin at TIME (HH:MM:SS.DDD)
  -t, --time=DURATION          play only for DURATION (HH:MM:SS.DDD)
  -z, --shuffle                randomize file list
  -r, --repeat[=MAX]           play files MAX times, or indefinitely
      --tty-control            enable keyboard controls
      --no-tty-control         disable keyboard controls

Miscellaneous:
  -T, --show-tags-only         show ID3/encoder tags only (do not decode)
  -V, --version                display version number and exit
      --license                show copyright/license message and exit
  -h, --help                   display this help and exit

Supported output formats:
  cdda    CD audio, 16-bit big-endian 44100 Hz stereo PCM (*.cdr, *.cda)
  aiff    Audio IFF, [16-bit] PCM (*.aif, *.aiff)
  wave    Microsoft RIFF/WAVE, [16-bit] PCM (*.wav)
  snd     Sun/NeXT audio, 8-bit ISDN mu-law (*.au, *.snd)
  raw     binary [16-bit] host-endian linear PCM
  hex     ASCII hexadecimal [24-bit] linear PCM
  null    no output (decode only)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
2.17.1 C调用函数

参考文档:http://blog.csdn.net/zouzuohuo/article/details/7895917

system("madplay north.mp3 &");//利用system函数调用madplay播放器播放*.mp3音乐
system("madplay north.mp3 -r &");//循环播放:参数-r
system("killall -9 madplay");//利用system函数调用killall命令将madplay终止掉
system("killall -STOP madplay &");//利用system函数调用killall命令将madplay暂停
system("killall -CONT madplay &");//利用system函数调用killall命令恢复madplay的播放

killall -19 madplay"使进程挂起以暂停
killall -18 madplay"使进程恢复运行
killall -9 madplay"终止进程以停止。
1
2
3
4
5
6
7
8
9
2.17.2 madplay 播放网路音频

参考文档:https://wiki.openwrt.org/toh/freecom/fsg-3?s[]=madplay

cd /tmp
wget http://icy-e-bz-05-cr.sharp-stream.com/magic1054.mp3 -O - | madplay

wget -O - http://u11aw.di.fm:80/di_goapsy | madplay -
wget -O - http://mp3stream1.apasf.apa.at:8000/ | madplay -
wget -O - http://hirschmilch.de:7000/psytrance.mp3 | madplay -

wget -O - http://64.236.34.97:80/stream/1014 | madplay -

$ wget–q–O– http://my_music.com/mystream | madplay -Q --no-tty-control- $ wget–q–O– http://my_music.com/mystream | madplay -Q --no-tty-control- $ wget–q–O– http://my_music.com/mystream | madplay -Q --no-tty-control- $ wget–q–O– http://my_music.com/mystream | madplay -Q --no-tty-control-
1
2
3
4
5
6
7
8
9
10
2.17.3 显示剩余时间

madplay -v --display-time=remaining 001.mp3
madplay -v --display-time=current /tmp/mounts/USB-A1/music/*.mp3
madplay -v /tmp/mounts/USB-A1/music/*.mp3
1
2
3
2.17.4 -o 将mp3转换成一个wav文件

$madplay /Media/SD-P1/moh/*.mp3 -o /tmp/tmp.wav
$madplay /Media/SD-P1/moh/*.mp3 -o /tmp/tmp.wav |aplay

| madplay - &
1
2
3
4
2.17.5 根据文件进行音乐播放

  http://www.epdoc.cn/qrs/18100.html

  root@mylinkit:/tmp# find /Media/SD-P1/moh/ -name "*.mp3" | sort >mp3.list
  root@mylinkit:/tmp# more mp3.list
  /Media/SD-P1/moh/001.mp3
  /Media/SD-P1/moh/002.mp3
  /Media/SD-P1/moh/003.mp3
  /Media/SD-P1/moh/001.mp3
  /Media/SD-P1/moh/002.mp3
  /Media/SD-P1/moh/003.mp3
  /Media/SD-P1/moh/004.mp3
  /Media/SD-P1/moh/005.mp3
  /Media/SD-P1/moh/006.mp3
  root@mylinkit:/tmp# madplay $(more mp3.list )

  example code:
    echo "sort the mp3 file and generate a mp3 list"
  find ./ -name "*.mp3"|sort>mp3.list
  /bin/echo "mp3.list:"
  more/mp3.list
  /bin/echo
  /bin/echo
  /bin/madplay$(more /mp3.list)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2.17.6 madplay管道控制方式 FIFO

参考文档:https://www.cs.sfu.ca/CourseCentral/433/bfraser/other/2011-student-howtos/MadplayControlViaButtons.pdf

2.17.7 madplay音量控制

获得喇叭的最大音量/最小音量/当前音量,运算后保存回去。

  MIN_VOLUME=$(amixer cget numid=11,iface=MIXER,name='Speaker Playback Volume' | grep '; type' |sed 's/^.*min=//g' | sed 's/,.*$//g')
  MAX_VOLUME=$(amixer cget numid=11,iface=MIXER,name='Speaker Playback Volume' | grep '; type' |sed 's/^.*max=//g' | sed 's/,.*$//g')
  ALSA_VOLUME=$(amixer cget numid=11,iface=MIXER,name='Speaker Playback Volume' | grep ': values' |sed 's/^.*values=//g' | sed 's/,.*$//g')
  let MAX_VOLUME-=8
  if [ "$ALSA_VOLUME" -le "$MAX_VOLUME" ]
  then
    let ALSA_VOLUME+=8
  fi
  #echo $ALSA_VOLUME >/dev/console; echo $MAX_VOLUME >/dev/console
  amixer cset numid=11,iface=MIXER,name='Speaker Playback Volume' $ALSA_VOLUME
1
2
3
4
5
6
7
8
9
10
2.17.8 参考文档:

讲解如何用按键控制madplay
http://wenku.baidu.com/link?url=aSt7QMxrFFHZngf7rN2lZu2R8tldvJdXnRSl93SCf1xldTvVFfQ_77dsWF3-nb9gYa3_LBDmJXTNLQQR09rCuUT-ycWgL-Z7V-BG3EH7fKW

Openwrt下 mplayer的配置详解
http://www.crystalradio.cn/thread-466848-1-1.html

mp3播放器控制程序
http://blog.sina.com.cn/s/blog_95268f5001016gnf.html

http://blog.csdn.net/zouzuohuo/article/details/7895917

2.18 swconfig

列出当前系统的存在的switch

root@ipRec:/etc/config# swconfig list
Found: switch0 - rt305x
1
2
展示当前switch端口配置

root@ipRec:/etc/config# swconfig dev rt305x show
Global attributes:
        enable_vlan: 0
        alternate_vlan_disable: 0
        bc_storm_protect: 0
        led_frequency: 0
Port 0:
        disable: 0
        doubletag: 1
        untag: 1
        led: 5
        lan: 1
        recv_bad: 0
        recv_good: 2479
        tr_bad: 0
        tr_good: 104
        pvid: 0
        link: port:0 link:up speed:100baseT full-duplex
Port 1:
        disable: 0
        doubletag: 1
        untag: 1
        led: 5
        lan: 1
        recv_bad: 0
        recv_good: 0
        tr_bad: 0
        tr_good: 0
        pvid: 0
        link: port:1 link:down
Port 2:
        disable: 0
        doubletag: 1
        untag: 1
        led: 5
        lan: 1
        recv_bad: 0
        recv_good: 0
        tr_bad: 0
        tr_good: 0
        pvid: 0
        link: port:2 link:down
Port 3:
        disable: 0
        doubletag: 1
        untag: 1
        led: 5
        lan: 1
        recv_bad: 0
        recv_good: 0
        tr_bad: 0
        tr_good: 0
        pvid: 0
        link: port:3 link:down
Port 4:
        disable: 0
        doubletag: 1
        untag: 1
        led: 5
        lan: 1
        recv_bad: 0
        recv_good: 0
        tr_bad: 0
        tr_good: 0
        pvid: 0
        link: port:4 link:down
Port 5:
        disable: 1
        doubletag: 1
        untag: 1
        led: ???
        lan: 1
        recv_bad: 0
        recv_good: 0
        tr_bad: 0
        tr_good: 0
        pvid: 0
        link: port:5 link:down
Port 6:
        disable: 0
        doubletag: 1
        untag: 1
        led: ???
        lan: ???
        recv_bad: ???
        recv_good: ???
        tr_bad: ???
        tr_good: ???
        pvid: 0
        link: port:6 link:up speed:1000baseT full-duplex
VLAN 0:
        ports: 0 1 2 3 4 5 6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
root@ipRec:/etc/config# ifconfig
br-lan    Link encap:Ethernet  HWaddr 00:0C:43:E1:76:2A
          inet addr:192.168.100.1  Bcast:192.168.100.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:43ff:fee1:762a/64 Scope:Link
          inet6 addr: fd83:d6c:cf85::1/60 Scope:Global
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:903 errors:0 dropped:0 overruns:0 frame:0
          TX packets:306 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:63543 (62.0 KiB)  TX bytes:27616 (26.9 KiB)

eth0      Link encap:Ethernet  HWaddr 00:0C:43:E1:76:29
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1130 errors:0 dropped:0 overruns:0 frame:0
          TX packets:132 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:124403 (121.4 KiB)  TX bytes:11965 (11.6 KiB)
          Interrupt:5

eth0.1    Link encap:Ethernet  HWaddr 00:0C:43:E1:76:29
          inet6 addr: fe80::20c:43ff:fee1:7629/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:9 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:1931 (1.8 KiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:8736 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8736 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:594720 (580.7 KiB)  TX bytes:594720 (580.7 KiB)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
2.19 网络配置

http://labs.mediatek.com/site/global/developer_tools/mediatek_linkit_smart_7688/training_docs/network/setup_wireless_router/index.gsp

2.20 gpio debug

可以通过#cat /sys/kernel/debug/gpio命令查询当前按钮状态。lo,低电平,hi为高电平。

root@mylinkit:/# cat /sys/kernel/debug/gpio
GPIOs 0-31, platform/10000600.gpio, 10000600.gpio:
gpio-11  (bootstrap           ) out lo
gpio-14  (BTN_0               ) in  hi
gpio-15  (BTN_1               ) in  hi
gpio-16  (BTN_2               ) in  hi
gpio-17  (BNT_3               ) in  hi
gpio-18  (BTN_4               ) in  hi
gpio-19  (S9                  ) in  hi

GPIOs 32-63, platform/10000600.gpio, 10000600.gpio:
  gpio-38  (reset               ) in  hi

GPIOs 64-95, platform/10000600.gpio, 10000600.gpio:

GPIOs 127-127, platform/gpio-wifi, gpio-wifi:
  gpio-127 (mediatek:orange:wifi) out ?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2.21 环境变量显示

环境变量的相关信息,参考linux鸟歌私房菜上,P304。

2.22 稍描wifi热点

# iwinfo ra0 scan
# time iwlist wlan0 scan | grep ESSID

root@mylinkit:/tmp# iwinfo ra0 scan
  Cell 01 - Address: 6C:E8:73:AB:0C:96
            ESSID: "FAST_AB0C96"
            Mode: Master  Channel: 1
            Signal: -256 dBm  Quality: 10/100
            Encryption: WPA2 PSK (AES-OCB)

  Cell 02 - Address: C8:3A:35:29:F5:54
            ESSID: "wanghf"
            Mode: Master  Channel: 1
            Signal: -256 dBm  Quality: 7/100
            Encryption: WPA PSK (AES-OCB)

  Cell 03 - Address: 00:06:25:00:6E:72
            ESSID: "home"
            Mode: Master  Channel: 6
            Signal: -256 dBm  Quality: 81/100
            Encryption: WPA2 PSK (TKIP, AES-OCB)

  Cell 04 - Address: 8C:21:0A:41:D3:64
            ESSID: "wf"
            Mode: Master  Channel: 11
            Signal: -256 dBm  Quality: 0/100
            Encryption: WPA2 PSK (AES-OCB)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2.23 du 查询磁盘空间使用情况

du /

2.24 PID查询命令ps, pidof, pgrep

2.25 date

http://www.runoob.com/linux/linux-comm-date.html
http://www.2cto.com/os/201310/248416.html
http://www.firefoxbug.com/index.php/archives/2799/
http://www.cnblogs.com/peida/archive/2012/12/13/2815687.html

date +%Y/%m/%d
date +%H:%M

+%Y - year年
+%m - month月
+%d - day天
+%H - Hour时
+%M - Minute分
+%S - Second秒
+%s - 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数
%H : 小时(00..23)
%I : 小时(01..12)
%k : 小时(0..23)
%l : 小时(1..12)
%M : 分钟(00..59)
%p : 显示本地 AM 或 PM
%r : 直接显示时间 (12 小时制,格式为 hh:mm:ss [AP]M)
%s : 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数
%S : 秒(00..61)
%T : 直接显示时间 (24 小时制)
%X : 相当于 %H:%M:%S
%Z : 显示时区 %a : 星期几 (Sun..Sat)
%A : 星期几 (Sunday..Saturday)
%b : 月份 (Jan..Dec)
%B : 月份 (January..December)
%c : 直接显示日期与时间
%d : 日 (01..31)
%D : 直接显示日期 (mm/dd/yy)
%h : 同 %b
%j : 一年中的第几天 (001..366)
%m : 月份 (01..12)
%U : 一年中的第几周 (00..53) (以 Sunday 为一周的第一天的情形)
%w : 一周中的第几天 (0..6)
%W : 一年中的第几周 (00..53) (以 Monday 为一周的第一天的情形)
%x : 直接显示日期 (mm/dd/yy)
%y : 年份的最后两位数字 (00.99)
%Y : 完整年份 (0000..9999)

date指定格式输出
$ date +”%Y-%m-%d %H:%M:%S”
2014-11-21 23:59:37

转换指定日期为Unix时间戳:
$ date -d “2008-01-01 00:00:00” +%s
1199116800

$ date -d 2008-01-01 +%s
1199116800

$ date -d 20080101 +%s
1199116800

例外: 有一种场景date格式是连续的(没找到date命令怎么转换成unix)

$ echo 20080101010101 | awk '{print substr($0,1,4)"-"substr($0,5,2)"-"substr($0,7,2)" "substr($0,9,2)":"substr($0,11,2)":"substr($0,13,2) }'
2008-01-01 01:01:01

$ date -d "2008-01-01 01:01:01" +%s
1199120461
1
2
3
4
5
6
7
8
9
10
11
12
13
14
root@mylinkit:/etc/config# date -help
date: invalid option – h
BusyBox v1.23.2 (2016-01-20 23:54:03 CST) multi-call binary.

Usage: date [OPTIONS] [+FMT] [TIME]

Display time (using +FMT), or set time

    [-s,--set] TIME Set time to TIME
    -u,--utc        Work in UTC (don't convert to local time)
    -R,--rfc-2822   Output RFC-2822 compliant date string
    -I[SPEC]        Output ISO-8601 compliant date string
                    SPEC='date' (default) for date only,
                    'hours', 'minutes', or 'seconds' for date and
                    time to the indicated precision
    -r,--reference FILE     Display last modification time of FILE
    -d,--date TIME  Display TIME, not 'now'
    -D FMT          Use FMT for -d TIME conversion
    -k              Set Kernel timezone from localtime and exit
1
2
3
4
5
6
7
8
9
10
11
12
Recognized TIME formats:
hh:mm[:ss]
[YYYY.]MM.DD-hh:mm[:ss]
YYYY-MM-DD hh:mm[:ss]
[[[[[YY]YY]MM]DD]hh]mm[.ss]

2.26 grep,sed,cut

参考moh-scheduler文档

  # SD10022016&ED31012016&DW1111100&TS1015TE1730
  start_day=$(cat $config_file |sed 's/^.*SD//g'|cut -c -8)
  cut切除指定的字符
  cut -c 1-8 //切除第1到第8字符
1
2
3
4
2.27 wait

https://zh.wikipedia.org/wiki/Wait_(%E5%91%BD%E4%BB%A4)

2.28 ubus

  root@mylinkit:~# ubus --help
  ubus: invalid option -- -
  Usage: ubus [<options>] <command> [arguments...]
  Options:
   -s <socket>:           Set the unix domain socket to connect to
   -t <timeout>:          Set the timeout (in seconds) for a command to complete
   -S:                    Use simplified output (for scripts)
   -v:                    More verbose output

  Commands:
   - list [<path>]                        List objects
   - call <path> <method> [<message>]     Call an object method
   - listen [<path>...]                   Listen for events
   - send <type> [<message>]              Send an event
   - wait_for <object> [<object>...]      Wait for multiple objects to appear on ubus


  root@mylinkit:~# ubus list
  dhcp
  iwinfo
  log
  network
  network.device
  network.interface
  network.interface.lan
  network.interface.loopback
  network.interface.wan
  network.wireless
  rpc-sys
  service
  session
  system
  uci

  root@mylinkit:~# ubus list -v
  'dhcp' @d5aa2d81
        "ipv4leases":{}
        "ipv6leases":{}
  'iwinfo' @804494b9
        "devices":{}
        "info":{"device":"String"}
        "scan":{"device":"String"}
        "assoclist":{"device":"String","mac":"String"}
        "freqlist":{"device":"String"}
        "txpowerlist":{"device":"String"}
        "countrylist":{"device":"String"}
        "phyname":{"section":"String"}
  'log' @e7e97da6
        "read":{"lines":"Integer"}
        "write":{"event":"String"}
  'network' @06d3dcba
        "restart":{}
        "reload":{}
        "add_host_route":{"target":"String","v6":"Boolean","interface":"String"}
        "get_proto_handlers":{}
        "add_dynamic":{"name":"String"}
  'network.device' @9b47eb98
        "status":{"name":"String"}
        "set_alias":{"alias":"Array","device":"String"}
        "set_state":{"name":"String","defer":"Boolean"}
  'network.interface' @c806e5d7
        "up":{}
        "down":{}
        "status":{}
        "prepare":{}
        "dump":{}
        "add_device":{"name":"String","link-ext":"Boolean"}
        "remove_device":{"name":"String","link-ext":"Boolean"}
        "notify_proto":{}
        "remove":{}
        "set_data":{}
  'network.interface.lan' @da711a3b
        "up":{}
        "down":{}
        "status":{}
        "prepare":{}
        "dump":{}
        "add_device":{"name":"String","link-ext":"Boolean"}
        "remove_device":{"name":"String","link-ext":"Boolean"}
        "notify_proto":{}
        "remove":{}
        "set_data":{}
  'network.interface.loopback' @eaf974e8
        "up":{}
        "down":{}
        "status":{}
        "prepare":{}
        "dump":{}
        "add_device":{"name":"String","link-ext":"Boolean"}
        "remove_device":{"name":"String","link-ext":"Boolean"}
        "notify_proto":{}
        "remove":{}
        "set_data":{}
  'network.interface.wan' @eff0e141
        "up":{}
        "down":{}
        "status":{}
        "prepare":{}
        "dump":{}
        "add_device":{"name":"String","link-ext":"Boolean"}
        "remove_device":{"name":"String","link-ext":"Boolean"}
        "notify_proto":{}
        "remove":{}
        "set_data":{}
  'network.wireless' @a8161143
        "up":{}
        "down":{}
        "status":{}
        "notify":{}
        "get_validate":{}
  'rpc-sys' @dd844b8f
        "password_set":{"user":"String","password":"String"}
        "upgrade_test":{}
        "upgrade_start":{"keep":"Boolean"}
        "upgrade_clean":{}
        "factory":{}
        "reboot":{}
  'service' @1312b281
        "set":{"name":"String","script":"String","instances":"Table","triggers":"Array","validate":"Array"}
        "add":{"name":"String","script":"String","instances":"Table","triggers":"Array","validate":"Array"}
        "list":{"name":"String","verbose":"Boolean"}
        "delete":{"name":"String","instance":"String"}
        "update_start":{"name":"String"}
        "update_complete":{"name":"String"}
        "event":{"type":"String","data":"Table"}
        "validate":{"package":"String","type":"String","service":"String"}
        "get_data":{"name":"String","instance":"String","type":"String"}
  'session' @4417ac78
        "create":{"timeout":"Integer"}
        "list":{"ubus_rpc_session":"String"}
        "grant":{"ubus_rpc_session":"String","scope":"String","objects":"Array"}
        "revoke":{"ubus_rpc_session":"String","scope":"String","objects":"Array"}
        "access":{"ubus_rpc_session":"String","scope":"String","object":"String","function":"String"}
        "set":{"ubus_rpc_session":"String","values":"Table"}
        "get":{"ubus_rpc_session":"String","keys":"Array"}
        "unset":{"ubus_rpc_session":"String","keys":"Array"}
        "destroy":{"ubus_rpc_session":"String"}
        "login":{"username":"String","password":"String","timeout":"Integer"}
  'system' @5bc7fd25
        "board":{}
        "info":{}
        "upgrade":{}
        "watchdog":{"frequency":"Integer","timeout":"Integer","stop":"Boolean"}
        "signal":{"pid":"Integer","signum":"Integer"}
        "nandupgrade":{"path":"String"}
  'uci' @2fd66254
        "configs":{}
        "get":{"config":"String","section":"String","option":"String","type":"String","match":"Table","ubus_rpc_session":"String"}
        "state":{"config":"String","section":"String","option":"String","type":"String","match":"Table","ubus_rpc_session":"String"}
        "add":{"config":"String","type":"String","name":"String","values":"Table","ubus_rpc_session":"String"}
        "set":{"config":"String","section":"String","type":"String","match":"Table","values":"Table","ubus_rpc_session":"String"}
        "delete":{"config":"String","section":"String","type":"String","match":"Table","option":"String","options":"Array","ubus_rpc_session":"String"}
        "rename":{"config":"String","section":"String","option":"String","name":"String","ubus_rpc_session":"String"}
        "order":{"config":"String","sections":"Array","ubus_rpc_session":"String"}
        "changes":{"config":"String","ubus_rpc_session":"String"}
        "revert":{"config":"String","ubus_rpc_session":"String"}
        "commit":{"config":"String","ubus_rpc_session":"String"}
        "apply":{"rollback":"Boolean","timeout":"Integer","ubus_rpc_session":"String"}
        "confirm":{"ubus_rpc_session":"String"}
        "rollback":{"ubus_rpc_session":"String"}
        "reload_config":{}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
3. openwrt application

3.1 opkg

3.2 date

  root@mylinkit:/etc/config# date -help
  date: invalid option -- h
  BusyBox v1.23.2 (2016-01-20 23:54:03 CST) multi-call binary.

  Usage: date [OPTIONS] [+FMT] [TIME]

  Display time (using +FMT), or set time

        [-s,--set] TIME Set time to TIME
        -u,--utc        Work in UTC (don't convert to local time)
        -R,--rfc-2822   Output RFC-2822 compliant date string
        -I[SPEC]        Output ISO-8601 compliant date string
                        SPEC='date' (default) for date only,
                        'hours', 'minutes', or 'seconds' for date and
                        time to the indicated precision
        -r,--reference FILE     Display last modification time of FILE
        -d,--date TIME  Display TIME, not 'now'
        -D FMT          Use FMT for -d TIME conversion
        -k              Set Kernel timezone from localtime and exit

  Recognized TIME formats:
        hh:mm[:ss]
        [YYYY.]MM.DD-hh:mm[:ss]
        YYYY-MM-DD hh:mm[:ss]
        [[[[[YY]YY]MM]DD]hh]mm[.ss]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
3.3 稍描wifi热点

  # iwinfo ra0 scan
  # time iwlist wlan0 scan | grep ESSID

  root@mylinkit:/tmp# iwinfo ra0 scan
  Cell 01 - Address: 6C:E8:73:AB:0C:96
            ESSID: "FAST_AB0C96"
            Mode: Master  Channel: 1
            Signal: -256 dBm  Quality: 10/100
            Encryption: WPA2 PSK (AES-OCB)

  Cell 02 - Address: C8:3A:35:29:F5:54
            ESSID: "wanghf"
            Mode: Master  Channel: 1
            Signal: -256 dBm  Quality: 7/100
            Encryption: WPA PSK (AES-OCB)

  Cell 03 - Address: 00:06:25:00:6E:72
            ESSID: "home"
            Mode: Master  Channel: 6
            Signal: -256 dBm  Quality: 81/100
            Encryption: WPA2 PSK (TKIP, AES-OCB)

  Cell 04 - Address: 8C:21:0A:41:D3:64
            ESSID: "wf"
            Mode: Master  Channel: 11
            Signal: -256 dBm  Quality: 0/100
            Encryption: WPA2 PSK (AES-OCB)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
3.4 alsamixer,amixer 音量调节

alsamixer是文本方式下的图形命令
amixer是文本方式下的文本命令
amixer

Simple mixer control 'Headphone',0
  Capabilities: pvolume
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 127
  Mono:
  Front Left: Playback 121 [95%] [0.00dB]
  Front Right: Playback 121 [95%] [0.00dB]
Simple mixer control 'Headphone Playback ZC',0
  Capabilities: pswitch
  Playback channels: Front Left - Front Right
  Mono:
  Front Left: Playback [on]
  Front Right: Playback [on]
Simple mixer control 'Speaker',0
  Capabilities: pvolume
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 127
  Mono:
  Front Left: Playback 121 [95%] [0.00dB]
  Front Right: Playback 121 [95%] [0.00dB]
Simple mixer control 'Speaker AC',0
  Capabilities: volume volume-joined
  Playback channels: Mono
  Capture channels: Mono
  Limits: 0 - 5
  Mono: 4 [80%]
Simple mixer control 'Speaker DC',0
  Capabilities: volume volume-joined
  Playback channels: Mono
  Capture channels: Mono
  Limits: 0 - 5
  Mono: 5 [100%]
Simple mixer control 'Speaker Playback ZC',0
  Capabilities: pswitch
  Playback channels: Front Left - Front Right
  Mono:
  Front Left: Playback [off]
  Front Right: Playback [off]
Simple mixer control 'PCM Playback -6dB',0
  Capabilities: pswitch pswitch-joined
  Playback channels: Mono
  Mono: Playback [off]
Simple mixer control 'Mono Output Mixer Left',0
  Capabilities: pswitch pswitch-joined
  Playback channels: Mono
  Mono: Playback [on]
Simple mixer control 'Mono Output Mixer Right',0
  Capabilities: pswitch pswitch-joined
  Playback channels: Mono
  Mono: Playback [on]
Simple mixer control 'Playback',0
  Capabilities: volume
  Playback channels: Front Left - Front Right
  Capture channels: Front Left - Front Right
  Limits: 0 - 255
  Front Left: 243 [95%] [-5.50dB]
  Front Right: 243 [95%] [-5.50dB]
Simple mixer control 'Capture',0
  Capabilities: cvolume cswitch
  Capture channels: Front Left - Front Right
  Limits: Capture 0 - 63
  Front Left: Capture 43 [68%] [-75.50dB] [off]
  Front Right: Capture 43 [68%] [-75.50dB] [off]
Simple mixer control '3D',0
  Capabilities: volume volume-joined pswitch pswitch-joined
  Playback channels: Mono
  Capture channels: Mono
  Limits: 0 - 15
  Mono: 0 [0%] Playback [off]
Simple mixer control '3D Filter Lower Cut-Off',0
  Capabilities: enum
  Items: 'Low' 'High'
  Item0: 'Low'
Simple mixer control '3D Filter Upper Cut-Off',0
  Capabilities: enum
  Items: 'High' 'Low'
  Item0: 'High'
Simple mixer control 'ADC High Pass Filter',0
  Capabilities: pswitch pswitch-joined
  Playback channels: Mono
  Mono: Playback [off]
Simple mixer control 'ADC PCM',0
  Capabilities: cvolume
  Capture channels: Front Left - Front Right
  Limits: Capture 0 - 255
  Front Left: Capture 206 [81%] [6.00dB]
  Front Right: Capture 206 [81%] [6.00dB]
Simple mixer control 'ADC Polarity',0
  Capabilities: enum
  Items: 'No Inversion' 'Left Inverted' 'Right Inverted' 'Stereo Inversion'
  Item0: 'No Inversion'
Simple mixer control 'ALC Attack',0
  Capabilities: volume volume-joined
  Playback channels: Mono
  Capture channels: Mono
  Limits: 0 - 15
  Mono: 2 [13%]
Simple mixer control 'ALC Decay',0
  Capabilities: volume volume-joined
  Playback channels: Mono
  Capture channels: Mono
  Limits: 0 - 15
  Mono: 3 [20%]
Simple mixer control 'ALC Function',0
  Capabilities: enum
  Items: 'Off' 'Right' 'Left' 'Stereo'
  Item0: 'Off'
Simple mixer control 'ALC Hold Time',0
  Capabilities: volume volume-joined
  Playback channels: Mono
  Capture channels: Mono
  Limits: 0 - 15
  Mono: 0 [0%]
Simple mixer control 'ALC Max Gain',0
  Capabilities: volume volume-joined
  Playback channels: Mono
  Capture channels: Mono
  Limits: 0 - 7
  Mono: 7 [100%]
Simple mixer control 'ALC Min Gain',0
  Capabilities: volume volume-joined
  Playback channels: Mono
  Capture channels: Mono
  Limits: 0 - 7
  Mono: 0 [0%]
Simple mixer control 'ALC Mode',0
  Capabilities: enum
  Items: 'ALC' 'Limiter'
  Item0: 'ALC'
Simple mixer control 'ALC Target',0
  Capabilities: volume volume-joined
  Playback channels: Mono
  Capture channels: Mono
  Limits: 0 - 15
  Mono: 4 [27%]
Simple mixer control 'DAC Deemphasis',0
  Capabilities: pswitch pswitch-joined
  Playback channels: Mono
  Mono: Playback [off]
Simple mixer control 'DAC Polarity',0
  Capabilities: enum
  Items: 'No Inversion' 'Left Inverted' 'Right Inverted' 'Stereo Inversion'
  Item0: 'No Inversion'
Simple mixer control 'Left Boost Mixer LINPUT1',0
  Capabilities: pswitch pswitch-joined
  Playback channels: Mono
  Mono: Playback [on]
Simple mixer control 'Left Boost Mixer LINPUT2',0
  Capabilities: pswitch pswitch-joined
  Playback channels: Mono
  Mono: Playback [on]
Simple mixer control 'Left Boost Mixer LINPUT3',0
  Capabilities: pswitch pswitch-joined
  Playback channels: Mono
  Mono: Playback [off]
Simple mixer control 'Left Input Boost Mixer LINPUT2',0
  Capabilities: volume volume-joined
  Playback channels: Mono
  Capture channels: Mono
  Limits: 0 - 7
  Mono: 0 [0%] [-99999.99dB]
Simple mixer control 'Left Input Boost Mixer LINPUT3',0
  Capabilities: volume volume-joined
  Playback channels: Mono
  Capture channels: Mono
  Limits: 0 - 7
  Mono: 0 [0%] [-99999.99dB]
Simple mixer control 'Left Input Mixer Boost',0
  Capabilities: pswitch pswitch-joined
  Playback channels: Mono
  Mono: Playback [on]
Simple mixer control 'Left Output Mixer Boost Bypass',0
  Capabilities: volume volume-joined pswitch pswitch-joined
  Playback channels: Mono
  Capture channels: Mono
  Limits: 0 - 7
  Mono: 2 [29%] [-15.00dB] Playback [off]
Simple mixer control 'Left Output Mixer LINPUT3',0
  Capabilities: volume volume-joined pswitch pswitch-joined
  Playback channels: Mono
  Capture channels: Mono
  Limits: 0 - 7
  Mono: 7 [100%] [0.00dB] Playback [off]
Simple mixer control 'Left Output Mixer PCM',0
  Capabilities: pswitch pswitch-joined
  Playback channels: Mono
  Mono: Playback [on]
Simple mixer control 'Noise Gate',0
  Capabilities: pswitch pswitch-joined
  Playback channels: Mono
  Mono: Playback [off]
Simple mixer control 'Noise Gate Threshold',0
  Capabilities: volume volume-joined
  Playback channels: Mono
  Capture channels: Mono
  Limits: 0 - 31
  Mono: 0 [0%]
Simple mixer control 'Right Boost Mixer RINPUT1',0
  Capabilities: pswitch pswitch-joined
  Playback channels: Mono
  Mono: Playback [on]
Simple mixer control 'Right Boost Mixer RINPUT2',0
  Capabilities: pswitch pswitch-joined
  Playback channels: Mono
  Mono: Playback [on]
Simple mixer control 'Right Boost Mixer RINPUT3',0
  Capabilities: pswitch pswitch-joined
  Playback channels: Mono
  Mono: Playback [off]
Simple mixer control 'Right Input Boost Mixer RINPUT2',0
  Capabilities: volume volume-joined
  Playback channels: Mono
  Capture channels: Mono
  Limits: 0 - 7
  Mono: 0 [0%] [-99999.99dB]
Simple mixer control 'Right Input Boost Mixer RINPUT3',0
  Capabilities: volume volume-joined
  Playback channels: Mono
  Capture channels: Mono
  Limits: 0 - 7
  Mono: 0 [0%] [-99999.99dB]
Simple mixer control 'Right Input Mixer Boost',0
  Capabilities: pswitch pswitch-joined
  Playback channels: Mono
  Mono: Playback [on]
Simple mixer control 'Right Output Mixer Boost Bypass',0
  Capabilities: volume volume-joined pswitch pswitch-joined
  Playback channels: Mono
  Capture channels: Mono
  Limits: 0 - 7
  Mono: 2 [29%] [-15.00dB] Playback [off]
Simple mixer control 'Right Output Mixer PCM',0
  Capabilities: pswitch pswitch-joined
  Playback channels: Mono
  Mono: Playback [on]
Simple mixer control 'Right Output Mixer RINPUT3',0
  Capabilities: volume volume-joined pswitch pswitch-joined
  Playback channels: Mono
  Capture channels: Mono
  Limits: 0 - 7
  Mono: 7 [100%] [0.00dB] Playback [off]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
amixer controls

numid=10,iface=MIXER,name='Headphone Playback ZC Switch'
numid=9,iface=MIXER,name='Headphone Playback Volume'
numid=15,iface=MIXER,name='PCM Playback -6dB Switch'
numid=39,iface=MIXER,name='Mono Output Mixer Left Switch'
numid=40,iface=MIXER,name='Mono Output Mixer Right Switch'
numid=17,iface=MIXER,name='ADC High Pass Filter Switch'
numid=34,iface=MIXER,name='ADC PCM Capture Volume'
numid=16,iface=MIXER,name='ADC Polarity'
numid=2,iface=MIXER,name='Capture Volume ZC Switch'
numid=3,iface=MIXER,name='Capture Switch'
numid=1,iface=MIXER,name='Capture Volume'
numid=8,iface=MIXER,name='Playback Volume'
numid=21,iface=MIXER,name='3D Filter Lower Cut-Off'
numid=20,iface=MIXER,name='3D Filter Upper Cut-Off'
numid=23,iface=MIXER,name='3D Switch'
numid=22,iface=MIXER,name='3D Volume'
numid=31,iface=MIXER,name='ALC Attack'
numid=30,iface=MIXER,name='ALC Decay'
numid=24,iface=MIXER,name='ALC Function'
numid=28,iface=MIXER,name='ALC Hold Time'
numid=25,iface=MIXER,name='ALC Max Gain'
numid=27,iface=MIXER,name='ALC Min Gain'
numid=29,iface=MIXER,name='ALC Mode'
numid=26,iface=MIXER,name='ALC Target'
numid=19,iface=MIXER,name='DAC Deemphasis Switch'
numid=18,iface=MIXER,name='DAC Polarity'
numid=54,iface=MIXER,name='Left Boost Mixer LINPUT1 Switch'
numid=52,iface=MIXER,name='Left Boost Mixer LINPUT2 Switch'
numid=53,iface=MIXER,name='Left Boost Mixer LINPUT3 Switch'
numid=7,iface=MIXER,name='Left Input Boost Mixer LINPUT2 Volume'
numid=6,iface=MIXER,name='Left Input Boost Mixer LINPUT3 Volume'
numid=48,iface=MIXER,name='Left Input Mixer Boost Switch'
numid=46,iface=MIXER,name='Left Output Mixer Boost Bypass Switch'
numid=35,iface=MIXER,name='Left Output Mixer Boost Bypass Volume'
numid=45,iface=MIXER,name='Left Output Mixer LINPUT3 Switch'
numid=36,iface=MIXER,name='Left Output Mixer LINPUT3 Volume'
numid=44,iface=MIXER,name='Left Output Mixer PCM Playback Switch'
numid=33,iface=MIXER,name='Noise Gate Switch'
numid=32,iface=MIXER,name='Noise Gate Threshold'
numid=51,iface=MIXER,name='Right Boost Mixer RINPUT1 Switch'
numid=49,iface=MIXER,name='Right Boost Mixer RINPUT2 Switch'
numid=50,iface=MIXER,name='Right Boost Mixer RINPUT3 Switch'
numid=5,iface=MIXER,name='Right Input Boost Mixer RINPUT2 Volume'
numid=4,iface=MIXER,name='Right Input Boost Mixer RINPUT3 Volume'
numid=47,iface=MIXER,name='Right Input Mixer Boost Switch'
numid=43,iface=MIXER,name='Right Output Mixer Boost Bypass Switch'
numid=37,iface=MIXER,name='Right Output Mixer Boost Bypass Volume'
numid=41,iface=MIXER,name='Right Output Mixer PCM Playback Switch'
numid=42,iface=MIXER,name='Right Output Mixer RINPUT3 Switch'
numid=38,iface=MIXER,name='Right Output Mixer RINPUT3 Volume'
numid=14,iface=MIXER,name='Speaker AC Volume'
numid=13,iface=MIXER,name='Speaker DC Volume'
numid=11,iface=MIXER,name='Speaker Playback Volume'
numid=12,iface=MIXER,name='Speaker Playback ZC Switch'
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
numid=8,iface=MIXER,name='Playback Volume'
numid=9,iface=MIXER,name='Headphone Playback Volume'
numid=11,iface=MIXER,name='Speaker Playback Volume'
1
2
3
sed参考文档:Linux鸟歌的私房菜 P359

获得当前喇叭音量值

# amixer cget numid=11,iface=MIXER,name='Speaker Playback Volume' | grep ': values' |sed 's/^.*values=//g' | sed 's/,.*$//g'
1
获得耳机音量值

# amixer cget numid=9,iface=MIXER,name='Headphone Playback Volume' | grep ': values' |sed 's/^.*values=//g' | sed 's/,.*$//g'
1
获得播放音量值

# amixer cget numid=8,iface=MIXER,name='Playback Volume' | grep ': values' |sed 's/^.*values=//g' | sed 's/,.*$//g'
1
3.5 top

3.6 ps

Mem: 41608K used, 84840K free, 320K shrd, 4332K buff, 11960K cached
CPU:   0% usr   0% sys   0% nic  99% idle   0% io   0% irq   0% sirq
Load average: 0.00 0.01 0.05 2/43 1864
  PID  PPID USER     STAT   VSZ %VSZ %CPU COMMAND
1581  1191 root     S     1240   1%   0% /usr/sbin/dropbear -F -P /var/run/dro
1331     1 root     S     1016   1%   0% /sbin/mountd -f
1299     1 root     S     3188   3%   0% /usr/sbin/nmbd -F
1298     1 root     S     3096   2%   0% /usr/sbin/smbd -F
1088     1 root     S     1824   1%   0% /sbin/rpcd
1306     1 nobody   S     1768   1%   0% avahi-daemon: running [mylinkit.local
1267     1 root     S     1640   1%   0% /usr/sbin/uhttpd -f -h /www -r mylink
1122     1 root     S     1600   1%   0% /sbin/netifd
1582  1581 root     S     1496   1%   0% -ash
1401     1 root     S     1488   1%   0% /usr/sbin/ntpd -n -S /usr/sbin/ntpd-h
1602  1601 root     S     1488   1%   0% -ash
1864  1582 root     R     1488   1%   0% top
1504  1122 root     S     1484   1%   0% udhcpc -p /var/run/udhcpc-apcli0.pid
    1     0 root     S     1436   1%   0% /sbin/procd
1601  1191 root     S     1240   1%   0% /usr/sbin/dropbear -F -P /var/run/dro
1160     1 root     S     1192   1%   0% /usr/sbin/odhcpd
1191     1 root     S     1148   1%   0% /usr/sbin/dropbear -F -P /var/run/dro
1079     1 root     S     1056   1%   0% /sbin/logd -S 16
1572     1 nobody   S      992   1%   0% /usr/sbin/dnsmasq -C /var/etc/dnsmasq
  430     1 root     S      904   1%   0% /sbin/ubusd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
3.7 iwpriv

root@mylinkit:/tmp# iwpriv -help
Usage: iwpriv interface [private-command [private-arguments]]
1
2
root@mylinkit:/tmp# iwpriv
eth0.1    no private ioctls.

lo        no private ioctls.

ra0       Available private ioctls :
          set              (8BE2) : set 1536 char  & get   0
          show             (8BF1) : set 1024 char  & get   0
          get_site_survey  (8BED) : set   0       & get 1024 char
          set_wsc_oob      (8BF9) : set 1024 char  & get 1024 char
          get_mac_table    (8BEF) : set 1024 char  & get 1024 char
          e2p              (8BE7) : set 1024 char  & get 1024 char
          bbp              (8BE3) : set 1024 char  & get 1024 char
          mac              (8BE5) : set 1024 char  & get 1024 char
          rf               (8BF3) : set 1024 char  & get 1024 char
          get_wsc_profile  (8BF2) : set 1024 char  & get 1024 char
          get_ba_table     (8BF6) : set 1024 char  & get 1024 char
          stat             (8BE9) : set 1024 char  & get 1024 char

apcli1    Available private ioctls :
          set              (8BE2) : set 1536 char  & get   0
          show             (8BF1) : set 1024 char  & get   0
          get_site_survey  (8BED) : set   0       & get 1024 char
          set_wsc_oob      (8BF9) : set 1024 char  & get 1024 char
          get_mac_table    (8BEF) : set 1024 char  & get 1024 char
          e2p              (8BE7) : set 1024 char  & get 1024 char
          bbp              (8BE3) : set 1024 char  & get 1024 char
          mac              (8BE5) : set 1024 char  & get 1024 char
          rf               (8BF3) : set 1024 char  & get 1024 char
          get_wsc_profile  (8BF2) : set 1024 char  & get 1024 char
          get_ba_table     (8BF6) : set 1024 char  & get 1024 char
          stat             (8BE9) : set 1024 char  & get 1024 char

eth0      no private ioctls.

apcli0    Available private ioctls :
          set              (8BE2) : set 1536 char  & get   0
          show             (8BF1) : set 1024 char  & get   0
          get_site_survey  (8BED) : set   0       & get 1024 char
          set_wsc_oob      (8BF9) : set 1024 char  & get 1024 char
          get_mac_table    (8BEF) : set 1024 char  & get 1024 char
          e2p              (8BE7) : set 1024 char  & get 1024 char
          bbp              (8BE3) : set 1024 char  & get 1024 char
          mac              (8BE5) : set 1024 char  & get 1024 char
          rf               (8BF3) : set 1024 char  & get 1024 char
          get_wsc_profile  (8BF2) : set 1024 char  & get 1024 char
          get_ba_table     (8BF6) : set 1024 char  & get 1024 char
          stat             (8BE9) : set 1024 char  & get 1024 char

br-lan    no private ioctls.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
/lib/netifd/wireless/ralink.sh
* iwpriv ra0
* set
* Channel
* NoForwarding
* NoForwardingBTNBSSID
* NoForwardingMBCast
* HideSSID
* RADIUS_Server
* RADIUS_Port
* RADIUS_Key
* own_ip_addr
* EAPifname
* PreAuthIfname
* AuthMode
* EncrypType
* IEEE8021X
* “SSID=ssid”∗“WPAPSK={key}
* DefaultKeyID=2
* AuthMode=WEPAUTO
* EncrypType=WEP
* IEEE8021X=0
* DefaultKeyID=key∗WscConfMode=wsc_mode
* WscConfStatus=2
* WscMode=2
* ACLClearAll=1
* ACLAddEntry=”$m”
* AccessPolicy=0,1,2

# iwpriv ra0 set Channel=6
1
3.8 miniDLNA

https://wiki.openwrt.org/doc/uci/minidlna
https://github.com/xiongyihui/LinkIt_Smart_7688

Openwrt下安装miniDLNA

root@OpenWrt:~# opkg update
root@OpenWrt:~# opkg install minidlna
1
2
root@mylinkit:~# opkg install minidlna
Installing minidlna (1.1.4-2) to root...
Downloading http://downloads.openwrt.org/chaos_calmer/15.05.1/ramips/mt7688/packages/packages/minidlna_1.1.4-2_ramips_24kec.ipk.
Installing libexif (0.6.21-1) to root...
Downloading http://downloads.openwrt.org/chaos_calmer/15.05.1/ramips/mt7688/packages/packages/libexif_0.6.21-1_ramips_24kec.ipk.
Installing libffmpeg-mini (2.6.2-1) to root...
Downloading http://downloads.openwrt.org/chaos_calmer/15.05.1/ramips/mt7688/packages/packages/libffmpeg-mini_2.6.2-1_ramips_24kec.ipk.
Installing libflac (1.3.1-1) to root...
Downloading http://downloads.openwrt.org/chaos_calmer/15.05.1/ramips/mt7688/packages/packages/libflac_1.3.1-1_ramips_24kec.ipk.
Installing libvorbis (1.3.5-1) to root...
Downloading http://downloads.openwrt.org/chaos_calmer/15.05.1/ramips/mt7688/packages/packages/libvorbis_1.3.5-1_ramips_24kec.ipk.
Installing libogg (1.3.2-2) to root...
Downloading http://downloads.openwrt.org/chaos_calmer/15.05.1/ramips/mt7688/packages/packages/libogg_1.3.2-2_ramips_24kec.ipk.
Installing libuuid (2.25.2-4) to root...
Downloading http://downloads.openwrt.org/chaos_calmer/15.05.1/ramips/mt7688/packages/base/libuuid_2.25.2-4_ramips_24kec.ipk.
Configuring libogg.
Configuring libexif.
Configuring libflac.
Configuring libvorbis.
Configuring libuuid.
Configuring libffmpeg-mini.
Configuring minidlna.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Ubuntu下安装miniDLNAhttp://blog.csdn.net/wanruirui/article/details/14222283

1,安装

$ sudo apt-get install minidlna
1
2,修改配置

$ sudo vi /etc/minidlna.conf
1
3、你可以选择让minidlna随机启动

$ sudo update-rc.d minidlna defaults
1
4、启动minidlna服务

$ sudo service minidlna start
1
5、当你修改配置文件及媒体资源更新时,需要强制刷新,以便minidlna将最新的媒体文件进行索引

sudo service minidlna force-reload
1
6、查看资源个数

http://192.168.1.106:8200/
1
7、取消minidlna的开机自动启动

sudo update-rc.d -f minidlna remove
1
8、停止minidlna服务

sudo service minidlna stop
1
9、停止minidlna所有进程

sudo killall minidlna
1
10、卸载minidlna

sudo apt-get remove --purge minidlna
1
3.9 which/find

which用来查找可执行文件,find用来查找文件。另外,还有whereis,locate,不过在OpenWrt中默认没有这两个命令。

root@mylinkit:/# which which
/usr/bin/which
1
2
3.10 网络工具 //net-tools, iproute2, vlan, bridge-utils, wireless-tools

3.11 huawei 4g

kmod-usb-serial
kmod-usb-serial-option
kmod-usb-serial-wwan

usb-modeswitch
kmod-mii
kmod-usb-net
kmod-usb-wdm
kmod-usb-net-qmi-wwan
usb-modeswitch-data
uqmi

kmod-usb-net-huawei-cdc-ncm
1
2
3
4
5
6
7
8
9
10
11
12
13
uart

开两个shell,一端:cat /dev/ttyS0,另一端: echo 1111 >/dev/ttyS0
1

4. linux application

在ubuntu环境下,需要安装下面的安装包用来编译openwrt。

sudo apt-get install git g++ make libncurses5-dev subversion libssl-dev gawk libxml-parser-perl unzip wget python xz-utils
1
4.1 openssh-service

SSH服务是一个非常好的服务,采用加密方式进行文件传输。该服务可以替代telnet的明文连接,并且可以实现文件加密传输(scp)。

4.2 vnc server

在ubuntu12系统环境下

vnc server安装

$ sudo apt-get install vnc4server
1
设置vnc Password

启动VNC Server

$ vncserver
1
关闭一个VNC窗口

$ vncserver -kill :1
1
安装gnome

apt-get install gnome-panel gnome-settings-daemon metacity nautilus gnome-terminal
1
4.3 git

https://git-scm.com/book/zh/v2/Git-%E5%9F%BA%E7%A1%80-%E6%92%A4%E6%B6%88%E6%93%8D%E4%BD%9C

git command**

git clone

git reset HEAD^
git reset HEAD^^
git reset HEAD~3/1
git reset -hard origin/master // 回退到远程最新版本
git remote add github https://github.com/xxxx/openwrt.git
git remote -v
git checkout -b huang
git branch
git pull github huang:master // 从远程github拉出huang分支到本地的master
git push github huang:master // 上传本地的huang分支到github远程的master
git merge
基础命令:撤销没有提交修改

$ git checkout -- config-3.18
1
分支操作:合并master到分支

  git pull origon master    // 从远程服务器更新master分支
  git checkout IR077H       // 切换到IR077H分支
  git merge Master          // 合并Master分支到当前分支
1
2
3
库:创建本地 git 库 example.git

$ cd /opt/git
$ mkdir example.git
$ cd example.git
$ git --bare init
1
2
3
4
库:clone本地git库

$ git clone /opt/git/example.git
1
库:clone ssh远程库

$ git clone git@192.168.1.1:/opt/git/example.git
1
库;clone github库

# git clone https://github.com/MediaTek-Labs/linkit-smart-7688-feed.git
1
4.3.7 从服务器更新本地文档

$ git pull origin master:master
$ git pull origin IR077H:IR077H
1
2
分支管理

创建分支并切换到分支

$ git checkout -b moh
1
分支切换

$ git checkout moh
1
分支合并 //合并master到moh分支

$ git checkout moh 
$ git merge master 
1
2
#

图形界面GitK

$ gitk
1
gitk是linux下git自带的一个图形显示工具。可以使用这个工具在图形模式下察看详细的log文件等信息。

4.4 串口通讯

screen

ubuntu系统中使用如何使用RS232通讯,在系统中,可以采用screen命令。

$ ls /dev/ttyUSB*
$ sudo apt-get install screen
$ sudo screen /dev/ttyUSB0 57600
1
2
3
4.5 tftp server

在openwrt系统更新环节中,有多种方法可以实现firmware更新。tftp方式就是一个方法。我们可以在ubuntu中创建一个tftp server,这样uboot就可以通过网线直接更新firmware了。这是一个非常简单的方式。

sudo apt-get install tftpd-hpa
config /etc/default/tftpd-hpa
start server /etc/init.d/tftpd-hpa start or start tftp-hpa
stop server /etc/init.d/tftpd-hpa stop or stop tftp-hpa
4.5.1 安装下面的安装包

$ sudo apt-get install xinetd tftpd tftp
1
4.5.2 创建/etc/xinetd.d/tftp并且put this entry

service tftp
{
protocol        = udp
port            = 69
socket_type     = dgram
wait            = yes
user            = nobody
server          = /usr/sbin/in.tftpd
server_args     = /tftpboot
disable         = no
}
1
2
3
4
5
6
7
8
9
10
11
4.6 scp(secure copy)安全文件传输

Secure copy or SCP is a means of securely transferring computer files between a local host and a remote host or between two remote hosts. It is based on the Secure Shell (SSH) protocol.[1]

scp ~/.ssh/id_dsa.pub root@192.168.1.1:/tmp
1
4.7 重定向 0,1,2 >&1,>&2

0 是 < 的默认值,因此 < 与 0<是一样的;同理,> 与 1> 是一样的

标准输入(stdin):代码为0,使用<或<<;
标准输入(stdout):代码为1,使用>或>>;
标准错误输出(stderr):代码为2,使用2>或2>>。
0:Standard Input(STDIN)
1:Standard Output(STDOUT)
2:Standard Error Output(STDERR)
http://blog.csdn.net/thirstyblue/article/details/7974300
http://www.cnblogs.com/Centaurus/archive/2013/05/25/3098256.html
$ls /dev 1>filename         //把命令的标准输出重新定向到一个文件filename 
$ls /dev >>filename         //把输出追加到filename文件的末尾 
$ls -qw  /dev  2>filename   //把标准错误重新定向到文件 
$ls /dev &>filename         //把标准输出和错误都定向到文件 
1
2
3
4
4.8垃圾黑洞 /dev/null

$find /home -name .basehrc 2> /dev/null
1
4.8 yes 命令

4.9 du 查询磁盘空间使用情况

# du /
1
4.10 PID查询命令ps, pidof, pgrep

4.11 串口通讯 uart

得到串口数据

# cat /dev/ttyUSB0
1
$screen /dev/cu.usbserial-XXXXXXXX 57600
1
4.12 screen 串口命令

ubuntu@ubuntu-System-Name:~$ sudo screen /dev/ttyUSB1 57600
1
ubuntu@ubuntu-System-Name:~$ screen
-D -RR        Do whatever is needed to get a screen session.
-e xy         Change command characters.
-f            Flow control on, -fn = off, -fa = auto.
-h lines      Set the size of the scrollback history buffer.
-i            Interrupt output sooner when flow control is on.
-l            Login mode on (update /var/run/utmp), -ln = off.
-list         or -ls. Do nothing, just list our SockDir.
-L            Turn on output logging.
-m            ignore $STY variable, do create a new screen session.
-O            Choose optimal output rather than exact vt100 emulation.
-p window     Preselect the named window if it exists.
-q            Quiet startup. Exits with non-zero return code if unsuccessful.
-r            Reattach to a detached screen process.
-R            Reattach if possible, otherwise start a new session.
-s shell      Shell to execute rather than $SHELL.
-S sockname   Name this session <pid>.sockname instead of <pid>.<tty>.<host>.
-t title      Set title. (window's name).
-T term       Use term as $TERM for windows, rather than "screen".
-U            Tell screen to use UTF-8 encoding.
-v            Print "Screen version 4.00.03jw4 (FAU) 2-May-06".
-wipe         Do nothing, just clean up SockDir.
-x            Attach to a not detached screen. (Multi display mode).
-X            Execute <cmd> as a screen command in the specified session.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
4.13 后台运行命令

在linux中,让程序在后台运行的话,其实很简单。只要在运行程序的时候,在后面增加&符号就可以了。


5. Uboot

5.1 编译Uboot

  $git clone https://github.com/MediaTek-Labs/linkit-smart-7688-uboot.git
  $cd linkit-smart-7688-uboot
  $sudo tar jxf buildroot-gcc342.tar.bz2 -C /opt/
  $make
1
2
3
4
5.2 修改uboot串口号

修改文件linkit-smart-7688-uboot\board\rt2880\serial.h

line21: #define CFG_RT2880_CONSOLE RT2880_UART3
5.3 uboot环境变量打印/修改(printenv,setenv,saveenv)

MT7628 # printenv
bootcmd=tftp
bootdelay=1
baudrate=57600
ethaddr="00:AA:BB:CC:DD:10" //
ipaddr=10.10.10.123   // 设备IP
serverip=10.10.10.3   // 服务器IP
stdin=serial
stdout=serial
stderr=serial

Environment size: 149/4092 bytes
1
2
3
4
5
6
7
8
9
10
11
12
  MT7628 # setenv ipaddr 192.168.1.120
  MT7628 # setenv serverip 192.168.1.116
  MT7628 # saveenv
1
2
3
5.4 linkit u-boot特有烧录功能

5.4.1 uboot更新uboot-env环境变量

a. 在U盘中创建lks7688.cfg文件

  $cat lks7688.cfg
  wifi_ssid=moh_app
  wifi_key=12345678
1
2
3
b. 插入u盘到开发板usb端口,按下wifi按钮,复位板子。等待wifi指示灯亮后,松开wifi按钮。uboot烧录配置到uboot-env

5.4.2 uboot更新固件

a.烧录lks7688.img到U盘

b.插入u盘,按下wifi按钮,复位板子,等待大约5秒(wifi指示灯亮然后灭掉),松开wifi按钮,uboot开始烧录firmware

5.4.3 uboot更新uboot

a. 复制lks7688.ldr到U盘

b. u盘,按下wifi按钮,复位板子,等待大约20秒,松开wifi按钮,uboot更新uboot。

5.5 Uboot源代码分析

5.5.1 lib_mips/board.c

linkit-smart-7688-uboot的主要代码内容在这个文件当中,如果想对该uboot进行一些功能修改的话,可以在这个文件中进行进行。

6 shell command

6.1 pidof madplay





离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn