一个基于SW799核心板的底板,更多介绍见https://github.com/asdawn/fine3399
原底版支持镜像和刷机入门教程见:https://gitee.com/xiayang0521/rk3399/tree/sw799/
其中
android和batocera可用于亮机,hdmi显示正常,网口识别不全,其他硬件接口自测
Armbian、CentOS和openwrt都可以识别到双网口,固件问题hdmi显示不正常
Ubuntu_SW799_Rk3399_v2.5.1d_230721_update.7z 双网口、PCIE、GPU均可驱动 比较完美固件
Ubuntu下
firefly 密码 firefly
查看CPU温度 cat /sys/class/thermal/thermal_zone0/temp
另外,可以使用am40的镜像试机:
https://lajilao.top/thread-63-1-1.html
大概率hdmi正常,网口识别到一个,pcie未测
部件名称 | 芯片型号 | 备注说明 |
---|---|---|
CPU | RK3399 | Dual-core A72+Quad-core A53, 64 bits, 2GHz;Mali-T864 GPU |
RAM | 4 GB DDR3L SDRAM | |
Flash | 8G/16G | |
WIFI+BT | AP6236/AP6181 | WIFI WITH BLUETOOTH |
金手指 | 用于接底板 |
为了支持底板的nvme,核心板需要加两个电阻和六个电容,另外需要去掉两个排阻:
电容型号:大小 0201 规格 CL03A104KP3NNNC陶瓷固定贴片电容器 104KPX5R 10V 100NF0.1u
电阻型号:大小 0201 规格 22 33 50 欧姆都可以
如图为焊好后的样子,对照自己的核心板八个空焊的位置,从2颗大电阻开始从右到左依次为
电容 电容 电容 电容 电阻 电阻 电容 电容 以上方案依据为原理图和莓的成品焊接图
null&Jack第二批fine3399 采用如下方案: 从左到右:电容 电容 电阻 电阻 电容 电容 电阻 电阻
焊盘最好用低温锡拖一遍 较低温焊接以防用高温把核心板和cpu吹坏
去掉排阻 如下图红圈所示
部件名称 | 芯片型号 | 备注说明 |
---|---|---|
USB type A 3.0 | USB 3.0 * 1 | |
USB type C | USB type C * 1 | |
TF port | TF-card port * 1 | |
HDMI | HDMI 2.0 * 1 | |
NVME | NVME * 1 | |
power | 12V DC | 5.5 * 2.1 |
Ethernet | RTL8211F + RTL8153 | RJ45 Gigabit Ethernet * 2 |
金手指接口 | 用于接sw799核心 |
外壳打板PCB https://gitee.com/xiayang0521/berrybaseboard-test/releases/tag/sw799外壳简易版0.1beta
新手请使用我教程里的所用的镜像。
将Armbian_23.02.0-trunk_Bozz-rk3399_bullseye_current_5.15.89.img.xz或者openwrt_R23.01.01_bozz-fine3399-sw799a_k6.1.2-flippy-80+.img.xz烧录到tf卡
使用rufus烧写工具 https://rufus.ie/zh/
直接烧录img/img.xz/img.gz格式的镜像文件或者镜像压缩文件
依次选择tf卡设备和镜像文件,点击开始,等待烧录完成即可。
插到机子上,开机,即可启动tf外置系统 。
Armbian下,Armbian初始账号root 密码1234 (属于官方默认设置,以后刷任何机子的armbian先尝试这个) openwrt下,初始账号root 密码password(属于官方默认设置,以后刷任何机子的openwrt先尝试这个)
要使用 dd 和 gzip 备份,可以执行命令:
dd if=/dev/mmcblk2 | gzip > backup_mmcblk2.img.gz
在还原时,可以执行下列命令:
gzip -dc backup_mmcblk2.img.gz | dd of=/dev/mmcblk2
如需把Armbian或者openwrt装进emmc,ssh登陆后,将Armbian.img或者openwrt.img上传到/root/,执行
dd if=Armbian.img of=/dev/mmcblk2 bs=1M
# 如果是openwrt则执行
dd if=openwrt.img of=/dev/mmcblk2 bs=1M
armbian还可以执行
armbian-install # 选择 Boot from emmc - System on eMMC,安装完成后,选择 install/update bootloader on sd/emmc
一、常规办法
https://gitee.com/xiayang0521/rk3399/releases/tag/rk3399刷机工具和驱动
安装DriverAssitant_v5.1.1,打开AndroidTool
打开瑞芯微开发工具,按住recovery键或者如图短接箭头两点所指,插电开机,等待5s以内,发现一个maskrom设备,松开recovery键或者结束短接
启动了linux系统(外置内置均可),进入系统后执行
dd if=/dev/zero of=/dev/mmcblk2 bs=1M count=300
关机(如果有tf卡,关机后,拔掉tf卡),重新开机后可以自动进入maskrom模式
接TTL,连接串口并打开串口调试软件,开机后迅速在调试窗口按任意键,打断 u-boot 启动,执行如下命令
reboot bootloader
重启后会自动进入maskrom模式。
如图选择rk3399_loader_v1.24.126.bin 作为 Loader, img结尾的armbian/openwrt镜像作为 System(注意地址为0x00000000)
点击下载镜像标签,点击执行
rkdevtool下,
1 点击 升级固件
2 点击 固件 选择android.img或者Ubuntu_SW799_Rk3399_v2.5.1d_230721.img
3 点击 擦除flash
4 点击 升级
5.插上HDMI显示器,出现logo之后,多等待一会(几分钟到10分钟)
二、将emmc当作usb磁盘在windows下进行直接管理
将其烧录到tf卡,插到fine3399,typec线的typec一端连机子,另一端连接电脑,开机,查看电脑有没有识别到新存储设备, 如果没有则在设备管理器查看能否识别到rockchip未识别的设备,点击更新驱动,选择为大容量存储设备, 插拔电源重启fine3399,电脑即可识别到新存储设备,然后就可以将其用普通的usb烧录工具比如rufus等烧录linux或者安卓的emmc备份系统了。
进入烧写模式
同上进入 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
初始化 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
也可以使用图形化烧写工具 balena-etcher-electron
# 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/dhcpd.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
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
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。