SMART Technologies AM40

* 本站托管于cloudflare,如果访问慢或打开不,请使用魔法;
* Linux下能够驱动主板hdmi的大佬leo的内核补丁下载
* 感谢群友xiayang的无私分享精神;

SMART Technologies AM40

镜像下载:

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

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

本人移植或者收集群友的镜像分享: https://lajilao.top/thread-63-1-1.html

规格参数

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,由DP转的] + HDMI 2.0[ops 4k@60Hz]
power 12–19V DC at 2.5–1.6A PORT size: 5.5 * 2.5 [ops; main];3.0 * 1.1 [on board; hided]

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

你说啥?嫌屁股太大?分享群友的方案

am40不含尾插、改供电、开关键亚克力外壳图纸

https://lajilao.top/thread-64-1-1.html

AM40 3D打印外壳

https://lajilao.top/thread-46-1-1.html

没有尾插的话,主板hdmi在linux系统下驱动是个问题,目前有leo的内核可以驱动主板hdmi

https://lajilao.top/thread-63-1-1.html

am40主机介绍

输入图片说明

主板上电池右上方的白色按钮为uboot按键

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. 将

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

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

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

如需把Armbian装进emmc,ssh登陆后,将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) 拆机

按住主板上电池右上方的白色按钮(uboot按键)或者 短接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

下载安卓线刷包,解压出update.img文件

选择刷机工具的[升级固件]标签,选择[固件]-[擦除flash]

擦除完毕之后再次选择[高级功能]-[maskrom],然后选择[升级固件] - [升级]

等待升级完成,刷机结束之后自动进入recovery,擦除data与cache,大约2分钟黑屏,耐心等待即可。

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 不会托管以太网卡[^7]。若要使用 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

参考资料

[^1]: Boot option - Rockchip open source Document

[^2]: U-Boot v2020.01 和 Linux 5.4 在 RK3399 上部署

[^3]: ATF - Rockchip open source Document

[^4]: U-Boot - Rockchip open source Document

[^5]: Rockchip Kernel - Rockchip open source Document

[^6]: Rkdeveloptool - Rockchip open source Document

[^7]: network-manager does not manage ethernet and bluetooth interfaces