Go to file
xiayang0521 7dc72e3846
update README.md.
Signed-off-by: xiayang0521 <7832262+xiayang0521@user.noreply.gitee.com>
2023-05-15 01:49:51 +00:00
assets update README.md. 2023-05-15 01:49:51 +00:00
config 更新设备树 2020-08-12 08:57:06 +08:00
overlay 更新 AP6255 固件 2020-08-12 18:26:56 +08:00
scripts 问题报告 2020-08-12 11:44:27 +08:00
.gitignore 允许 root 远程登录 2020-08-11 14:48:58 +08:00
README.md update README.md. 2023-05-15 01:49:51 +00:00
android update.png update README.md. 2023-05-07 00:35:53 +00:00

README.md

SMART Technologies AM40

镜像下载:http://files.kos.org.cn/%E7%91%9E%E8%8A%AF%E5%BE%AE/am40/

ophub Armbian下载https://github.com/ophub/amlogic-s9xxx-armbian/releases

ophub openwrt下载https://github.com/ophub/amlogic-s9xxx-openwrt/releases

规格参数

AM40整机为 主机和OPS扩展两部分

整机接口: 双USB3.0+千兆有线网口 + HDMI1.4 + TF卡口 + OPS接口

OPS扩展四个USB2.0 + HDMI2.0 + 6个COM口

部件名称 芯片型号 备注说明
CPU RK3399 Dual-core A72+Quad-core A53, 64 bits, 2GHz;Mali-T864 GPU
RAM 4 GB DDR3L SDRAM
Flash 32G eMMC 5.1
Ethernet RTL8211F RJ45 Gigabit Ethernet
WIFI+BT M2-EKEY-PCIE RTL8822BE 802.11AC/ABGN PCIE WLAN WITH BLUETOOTH 4.2 SINGLE-CHIP CONTROLLER
USB 2.0 USB 2.0[ops] * 4
USB 3.0 USB 3.0 [on board] * 2
HDMI HDMI 1.4[(1920 × 1080) on board] + HDMI 2.0[ops 4k@60Hz]
power 1219V DC at 2.51.6A PORT size 5.5 * 2.5 [ops; main]3.0 * 1.1 [on board; hided]

电源测试5V2A、12V1A也能启动已有5521接口电源的可以购买5521母转5525 DC转接头。

am40主机介绍

输入图片说明

https://gitee.com/xiayang0521/rk3399/releases/download/rk3399%E5%88%B7%E6%9C%BA%E5%B7%A5%E5%85%B7%E5%92%8C%E9%A9%B1%E5%8A%A8/specs_am40.pdf

教育系统卡刷包:

https://support.smarttech.com/docs/accessories/comp-modules-and-appliances/iq-appliance/en/downloads/am40/current-version.cshtml

系统介绍:

https://www.youtube.com/watch?v=vRDcXASva3s

开箱:

https://g.itemz.cn/IooVVP

以下教程均针对整机的情况如果仅主机则打开电源通电后找到挨着主机dc口的名为J1的一个白色塑料里的两个插针一下(或者找到挨着UART的J2也行)短接J1或者J2一秒才能开机。

卡刷教程

据说有些镜像只能线刷不能卡刷,新手请使用我教程里的所用的镜像。

1. 将

http://files.kos.org.cn/%E7%91%9E%E8%8A%AF%E5%BE%AE/am40/Armbian_23.02.2_am40_jammy_current_6.1.11.7z

解压出Armbian_23.02.2_am40_jammy_current_6.1.11.img,烧录到tf卡

Windows下TF烧写

使用rufus烧写工具 https://rufus.ie/zh/

直接烧录img/img.xz/img.gz格式的镜像文件或者镜像压缩文件

输入图片说明

如图 依次选择tf卡设备和镜像文件点击开始等待烧录完成即可。

插到机子上开机即可启动tf外置系统 。Armbian下板载HDMI无驱动ops上HDMI正常。

Armbian初始账号root 密码1234 属于官方默认设置以后刷任何机子的armbian先尝试这个

很多网卡的驱动没有集成,需要自行安装 安装方法如下(操作以下命令确保开发板插上了网线)

apt update

apt install armbian-firmware-full

执行完上面两句命令就重启一下

reboot

完成后就会发现有wifi了

2. 需要备份EMMC里的系统

AM40原厂Android_mmcblk2备份

要使用 dd 和 gzip 备份,可以执行命令:

dd if=/dev/mmcblk2 | gzip > Android_am40_mmcblk2.img.gz

附我机子的备份文件 如果忘记备份了 用我的恢复也许也行

https://github.com/xiayang0521/rk3399/releases/download/AM40%E5%8E%9F%E5%8E%82Android_mmcblk2%E5%A4%87%E4%BB%BD/Android_am40_mmcblk2.img.gz

在还原时,可以执行下列命令:

gzip -dc Android_am40_mmcblk2.img.gz | dd of=/dev/mmcblk2

如需把Armbian装进emmcssh登陆后将Armbian_23.02.2_am40_jammy_current_6.1.11.img上传到/root/,执行

dd if=Armbian_23.02.2_am40_jammy_current_6.1.11.img of=/dev/mmcblk2 bs=1M

或者执行

armbian-install # 选择 Boot from emmc - System on eMMC安装完成后选择 install/update bootloader on sd/emmc

3. 完成后关机拔掉tf卡重新启动即可请耐心等待1分钟如果超过1分钟不启动再考虑是哪里出了问题。

Windows线刷教程

1.下载DriverAssitant_v5.1.1,AndroidTool,rk3399_loader_v1.24.126.bin

https://gitee.com/xiayang0521/rk3399/releases/tag/rk3399%E5%88%B7%E6%9C%BA%E5%B7%A5%E5%85%B7%E5%92%8C%E9%A9%B1%E5%8A%A8

安装DriverAssitant_v5.1.1,打开AndroidTool

2. 插usb双公头到第一个usb3.0(上面的),另一端接电脑

3. 找到service开关拨到service

4. 进入maskrom模式

a 内部系统为原版安卓系统

插电开机打开瑞芯微开发工具会发现一个adb设备点击切换

输入图片说明

等待变成发现一个loader设备

点击高级功能找到 进入maskrom 按钮点击然后等待发现一个maskrom设备

输入图片说明

b 不是安卓系统

比如启动了linux系统外置内置均可进入系统后执行

dd if=/dev/zero of=/dev/mmcblk2 bs=1M count=300

关机如果有tf卡关机后拔掉tf卡重新开机后可以自动进入maskrom模式

c 实在没办法,可以采用以下两种之一

(1) 拆机短接maskrom短接点

插usb双公头到第一个usb3.0(上面的)另一端接电脑插电开机在刷机软件中观察是否进入maskrom模式

输入图片说明

(2) 进行串口调试

接TTL如图依次为gnd vcc tx rx接线不要接vcc测试了市面上常见的几款 CH340G、PL2303HX 方案的串口,均存在只能读不能写问题,这将无法从串口打断 u-boot 启动和进行 shell 操作,建议使用 CP2104 方案的串口代替。串口调试软件使用 minicom 、putty、SecureCRT 等工具。 连接串口并打开串口调试软件,开机后迅速在调试窗口按任意键,打断 u-boot 启动,执行如下命令

reboot bootloader

重启后会自动进入刷机模式。

输入图片说明

5.发现一个maskrom设备后

a 刷linux

如图选择rk3399_loader_v1.24.126.bin 作为 Loader, img结尾的armbian镜像作为 System(注意地址为0x00000000)

注意地址system为0x00000000 点击下载镜像标签,点击执行

输入图片说明

b 刷android update.img

如图 1 点击升级固件2 点击固件 选择android update.img固件3 点击升级

输入图片说明

6.刷完记得把service开关拨到normal

Armbian初始账号root 密码1234 属于官方默认设置以后刷任何机子的armbian先尝试这个

Armbian下板载HDMI无驱动ops上HDMI正常。

很多网卡的驱动没有集成,需要自行安装 安装方法如下(操作以下命令确保开发板插上了网线)

apt update

apt install armbian-firmware-full

执行完上面两句命令就重启一下

reboot

完成后就会发现有wifi了

Linux线刷教程

  1. 进入烧写模式

    同上进入 MaskRom 模式

    # 查看连接的设备
    ./rkbin/tools/upgrade_tool ld
    # 或使用 rkdeveloptool
    # 因 ./rkbin/tools/rkdeveloptool 这个不支持 ld 命令故需要重新编译 rkdeveloptool
    git clone https://github.com/rockchip-linux/rkdeveloptool.git
    sudo apt install -y libudev-dev libusb-dev dh-autoreconf libglib2.0-dev
    cd rkdeveloptool && autoreconf -i && ./configure && make
    sudo mv rkdeveloptool /usr/local/bin/
    rkdeveloptool ld
    
    # 应会有如下设备信息
    DevNo=1 Vid=0x2207,Pid=0x330c,LocationID=301    Loader
    # 或
    DevNo=1 Vid=0x2207,Pid=0x330c,LocationID=301    MaskRom
    
    # Loader 模式进入 MaskRom 模式方法
    ./rkbin/tools/upgrade_tool rd 3
    # 或
    rkdeveloptool rd 3
    
  2. 初始化 DRAM

    需要在 MaskRom 模式下才下载,否则报错 “The device does not support this operation!”。

    # 初始化 DRAM
    ./rkbin/tools/upgrade_tool db ./rk3399_loader_v1.22.119.bin
    # 或
    rkdeveloptool db ./rk3399_loader_v1.22.119.bin
    
    # 下载镜像
    ./rkbin/tools/upgrade_tool wl 0x0 ./system.img
    # 或
    rkdeveloptool wl 0x0 ./system.img
    
    

Linux下TF烧写

也可以使用图形化烧写工具 balena-etcher-electron

https://github.com/balena-io/etcher/releases

# sdX 为 sdcard 对应的块设备文件
sudo dd if=system.img of=/dev/sdX bs=4M oflag=sync status=progress

串口调试

串口选择

测试了市面上常见的几款 CH340G、PL2303HX 方案的串口,均存在只能读不能写问题,这将无法从串口打断 u-boot 启动和进行 shell 操作,建议使用 CP2104 方案的串口代替。

通信软件

也可以使用 minicom 、putty、SecureCRT 等工具。

# 解决串口权限问题
sudo usermod -a -G dialout $USER
# 重新登录后生效
reboot

# 安装串口通信软件
sudo apt install -y python3-serial

# 打开串口
miniterm /dev/ttyUSB0 1500000

# 退出 miniterm 快捷键为 Ctrl + ]

系统配置

网络

有线

# 使用 netplan 配置以太网络
sudo nano /etc/netplan/01-netcfg.yaml

# 配置为动态获取 IP
network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: yes

# 或静态 IP
network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
     dhcp4: no
     addresses: [10.0.0.10/24]
     gateway4: 10.0.0.1
     nameservers:
       addresses: [223.5.5.5,223.6.6.6]

# 应用配置
sudo netplan --debug apply

无线

# WiFi 配置
nmcli dev wifi connect "hotspot-name" password "password"

# 或使用 nmtui 命令图形化修改

热点

使用 hostapd + isc-dhcp-server

sudo apt install -y hostapd isc-dhcp-server

# 配置 hostapd
sudo nano /etc/hostapd/hostapd.conf
interface=wlan0
driver=nl80211
ssid=hostspot-name
macaddr_acl=0
auth_algs=1
#auth_algs=3
ignore_broadcast_ssid=0
hw_mode=g
channel=6
wpa=2
wpa_passphrase=password
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
#wpa_pairwise=TKIP
#rsn_pairwise=CCMP

# 修改 hostapd 默认配置文件路径
sudo nano /etc/default/hostapd
DAEMON_CONF=/etc/hostapd/hostapd.conf

# 重启 hostapd
sudo service hostapd restart
sudo service hostapd status

# dhcp 配置
sudo nano /etc/dhcp/dhcp.conf
#option domain-name "example.org";
#option domain-name-servers ns1.example.org, ns2.example.org;
authoritative;
subnet 10.0.0.0 netmask 255.255.255.0 {
    range 10.0.0.10 10.0.0.200;
    option broadcast-address 10.0.0.255;
    option routers 10.0.0.1;
    default-lease-time 600;
    max-lease-time 7200;
    option domain-name "local";
    option domain-name-servers 223.5.5.5, 8.8.4.4;
}

# 设置 dhcp 网口
# 不进行操作会出现错误Not configured to listen on any interfaces!
sudo nano /etc/default/isc-dhcp-server
INTERFACESv4="wlan0"
INTERFACESv6="wlan0"

# 设置 wlan0 地址
# 不进行操作会出现错误Not configured to listen on any interfaces!
sudo ip addr add 10.0.0.1/24 dev wlan0

# 开启转发
sudo sysctl -w net.ipv4.ip_forward=1
sudo iptables -t nat -A POSTROUTING -s 10.0.0.1/24 -o eth0 -j MASQUERADE

# 启动 dhcp 服务
sudo service isc-dhcp-server restart
sudo service isc-dhcp-server status

使用 network-manager + dnsmasq

# 此方按创建的 2.4G 热点会出现部分旧设备连接不上
sudo apt install -y dnsmasq
#nmcli dev wifi hotspot ifname wlan0 ssid "hotspot-name" password "password"
nmcli connection add type wifi ifname wlan0 con-name "Hostspot" autoconnect no ssid "hotspot-name"
nmcli connection modify "Hostspot" 802-11-wireless.mode ap 802-11-wireless.band bg ipv4.method shared
nmcli connection modify "Hostspot" wifi-sec.key-mgmt wpa-psk
nmcli connection modify "Hostspot" wifi-sec.psk "password"
nmcli connection up "Hostspot"

# 或使用 nmtui 命令图形化修改

镜像源

sudo cp -a /etc/apt/sources.list /etc/apt/sources.list.bak
sudo sed -i "s@http://ports.ubuntu.com@http://mirrors.huaweicloud.com@g" /etc/apt/sources.list

本地化

# 安装英文与简体中文语言包
sudo apt install -y language-pack-en language-pack-zh-hans
# 设置本地化
sudo dpkg-reconfigure locales

# 配置时区
sudo apt install -y tzdata
sudo dpkg-reconfigure tzdata
# 同步硬件时间
sudo hwclock -s

分区扩容

sudo apt install -y parted
sudo parted /dev/mmcblk2
unit s
print
resizepart 5 100%
print
Q

sudo resize2fs /dev/mmcblk2p5

Docker

sudo apt install gnupg2 -y

# 添加 apt 公钥
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

# 添加软件源
echo "deb [arch=arm64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list

# 安装 docker
sudo apt update && sudo apt install docker-ce -y

# 非 root 用户免 sudo 操作 docker
sudo usermod -aG docker $USER

常见问题

Q能进 MaskRom 模式,但下载 Loader 初始化 DRAM 总是失败。或 u-boot 无等待时间不能按 RECOVERY 键进入 MaskRom 模式。

A插上带有系统的 tf卡默认会从tf卡连接串口并打开串口调试软件开机后迅速在调试窗口按任意键打断 u-boot 启动,执行如下命令破坏 u-boot重启后会自动进入 MaskRom 模式。

mmc dev 0
mmc erase 0 2000
reset

或者进入系统后

dd if=/dev/zero of=/dev/mmcblk2 bs=1M count=300

Q使用 apt 安装软件包时出现如下警告:

perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), LC_ALL = (unset), LANG = "zh_CN.UTF-8" are supported and installed on your system. perl: warning: Falling back to the standard locale ("C").

A参考 系统配置-本地化 一节安装相应语言包即可解决。


Q以太网卡因未被 network-manager 托管不能启用。

# 网卡未启用
ip addr show eth0
2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 16:a6:4c:50:54:44 brd ff:ff:ff:ff:ff:ff

# 网卡未被 network-manager
nmcli device
DEVICE  TYPE      STATE      CONNECTION
eth0    ethernet  unmanaged  --
lo      loopback  unmanaged  --

# 使用该命令启用网卡无效
nmcli dev set eth0 managed yes

A原因在于 Ubuntu 更推荐使用 netplan 配置以太网络,默认的 network-manager 配置 /usr/lib/NetworkManager/conf.d/10-globally-managed-devices.conf 不会托管以太网卡1。若要使用 network-manager 托管所有网络设备操作如下:

# 覆盖默认配置
sudo touch /etc/NetworkManager/conf.d/10-globally-managed-devices.conf

Q如何获取当前系统的设备树和内核编译选项

A使用如下命令获取

# 设备树
cat /sys/firmware/fdt > raw.dtb

# 内核编译选项
zcat /proc/config.gz > kernel.config

Q如何连接蓝牙音箱

A使用如下命令连接

sudo apt install -y bluez bluez-tools pulseaudio pulseaudio-module-bluetooth

# 查看蓝牙信息
hciconfig

# 使用 bluetoothctl 命令操作蓝牙
# 上电
power on
# 扫描
scan on
# 配对
pair MAC
# 信任
trust MAC
# 连接
connect MAC

# 如果连接时出现 Failed to connect: org.bluez.Error.Failed 可以通过重启 pulseaudio 解决
pulseaudio -k
pulseaudio --start

# 声道测试
speaker-test -c2 -twav

# 查看 PulseAudio 信息
pactl info

# 查看音频输出通道
pactl list sinks

# 设置为默认音频输出通道,通过 TAB 补全后面的名称
pactl set-default-sink bluez_sink.MAC.a2dp_sink

参考资料