Skip to contentSkip to conversation

orangepi_pc_plus: new board and its drivers

PATCH New Sergey Matyukevich 3 participants 10 messages Nov 8, 2017 – Dec 4, 2017

lore
Share & tools
lore
#0 lore raw

cover orangepi_pc_plus: new board and its drivers

Hi all,

This patchset adds support for orange-pi-pc-plus board and its wireless driver. In fact this board is a variant of orangepi-pc board. It adds 8GB eMMC and Realtek RTL8189FTV SDIO WiFi chip. On the other hand, this variant has a separate support in U-Boot and kernel. So it looks like it makes sense to create a separate entry for this board in buildroot.

Patches are rebased on top of the up-to-date master branch.

Regards,
Sergey

Sergey Matyukevich (3):
board/orangepi: add support for orangepi-pc-plus board
rtl8189fs: new package
orangepi-pc-plus: enable WiFi support

 DEVELOPERS                                          |    1 
 board/orangepi/orangepi-pc-plus/boot.cmd            |    8 +++
 board/orangepi/orangepi-pc-plus/genimage.cfg        |   36 ++++++++++++++++
 board/orangepi/orangepi-pc-plus/linux-extras.config |    8 +++
 board/orangepi/orangepi-pc-plus/post-build.sh       |    1 
 board/orangepi/orangepi-pc-plus/post-image.sh       |    1 
 board/orangepi/orangepi-pc-plus/readme.txt          |   29 +++++++++++++
 configs/orangepi_pc_plus_defconfig                  |   44 ++++++++++++++++++++
 package/Config.in                                   |    1 
 package/rtl8189fs/Config.in                         |   10 ++++
 package/rtl8189fs/rtl8189fs.hash                    |    2 
 package/rtl8189fs/rtl8189fs.mk                      |   17 +++++++
  12 files changed, 158 insertions(+)
#1 lore raw

PATCH 1/3 board/orangepi: add support for orangepi-pc-plus board

This board is a variant of orangepi-pc board. It adds 8GB eMMC and Realtek RTL8189FTV SDIO WiFi chip. This variant has a separate support in U-Boot and kernel. So it makes sense to create a separate entry
for this board in buildroot.

Board support package includes the following components:
- mainline u-boot 2017.09
- mainline kernel 4.13.11

---
 board/orangepi/orangepi-pc-plus/boot.cmd           |  8 +++++
 board/orangepi/orangepi-pc-plus/genimage.cfg       | 36 ++++++++++++++++++++
 .../orangepi/orangepi-pc-plus/linux-extras.config  |  8 +++++
 board/orangepi/orangepi-pc-plus/post-build.sh      |  1 +
 board/orangepi/orangepi-pc-plus/post-image.sh      |  1 +
 board/orangepi/orangepi-pc-plus/readme.txt         | 29 +++++++++++++++++
 configs/orangepi_pc_plus_defconfig                 | 38 ++++++++++++++++++++++
 7 files changed, 121 insertions(+)
 create mode 100644 board/orangepi/orangepi-pc-plus/boot.cmd
 create mode 100644 board/orangepi/orangepi-pc-plus/genimage.cfg
 create mode 100644 board/orangepi/orangepi-pc-plus/linux-extras.config
 create mode 120000 board/orangepi/orangepi-pc-plus/post-build.sh
 create mode 120000 board/orangepi/orangepi-pc-plus/post-image.sh
 create mode 100644 board/orangepi/orangepi-pc-plus/readme.txt
 create mode 100644 configs/orangepi_pc_plus_defconfig
board/orangepi/orangepi-pc-plus/boot.cmd new file +8 -0
new file mode 100644
index 0000000000..0c75c862e0
@@ -0,0 +1,8 @@
+setenv fdt_high ffffffff
+
+setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait
+
+fatload mmc 0 $kernel_addr_r zImage
+fatload mmc 0 $fdt_addr_r sun8i-h3-orangepi-pc-plus.dtb
+
+bootz $kernel_addr_r - $fdt_addr_r
board/orangepi/orangepi-pc-plus/genimage.cfg new file +36 -0
new file mode 100644
index 0000000000..9ffa1a21ae
@@ -0,0 +1,36 @@
+# Minimal SD card image for the OrangePi PC Plus
+#
+image boot.vfat {
+	vfat {
+		files = {
+			"zImage",
+			"sun8i-h3-orangepi-pc-plus.dtb",
+			"boot.scr"
+		}
+	}
+	size = 10M
+}
+
+image sdcard.img {
+	hdimage {
+	}
+
+	partition u-boot {
+		in-partition-table = "no"
+		image = "u-boot-sunxi-with-spl.bin"
+		offset = 8192
+		size = 1040384 # 1MB - 8192
+	}
+
+	partition boot {
+		partition-type = 0xC
+		bootable = "true"
+		image = "boot.vfat"
+	}
+
+	partition rootfs {
+		partition-type = 0x83
+		image = "rootfs.ext4"
+		size = 512M
+	}
+}
board/orangepi/orangepi-pc-plus/linux-extras.config new file +8 -0
new file mode 100644
index 0000000000..5e3af2b831
@@ -0,0 +1,8 @@
+# wireless core
+CONFIG_WIRELESS=y
+CONFIG_CFG80211=y
+CONFIG_MAC80211=y
+CONFIG_CFG80211_WEXT=y
+
+# wireless drivers
+CONFIG_WLAN=y
board/orangepi/orangepi-pc-plus/post-build.sh new file +1 -0
new file mode 120000
index 0000000000..cd7f11645b
@@ -0,0 +1 @@
+../post-build.sh
\ No newline at end of file
board/orangepi/orangepi-pc-plus/post-image.sh new file +1 -0
new file mode 120000
index 0000000000..ae6294fa38
@@ -0,0 +1 @@
+../post-image.sh
\ No newline at end of file
board/orangepi/orangepi-pc-plus/readme.txt new file +29 -0
new file mode 100644
index 0000000000..49206949c8
@@ -0,0 +1,29 @@
+OrangePi PC Plus
+
+Intro
+=====
+
+This default configuration will allow you to start experimenting with the
+buildroot environment for the OrangePi PC Plus. With the current configuration
+it will bring-up the board, and allow access through the serial console.
+
+How to build it
+===============
+
+Configure Buildroot:
+
+    $ make orangepi_pc_plus_defconfig
+
+Compile everything and build the SD card image:
+
+    $ make
+
+How to write the SD card
+========================
+
+Once the build process is finished you will have an image called "sdcard.img"
+in the output/images/ directory.
+
+Copy the bootable "sdcard.img" onto an SD card with "dd":
+
+  $ sudo dd if=output/images/sdcard.img of=/dev/sdX
configs/orangepi_pc_plus_defconfig new file +38 -0
new file mode 100644
index 0000000000..ec177286cc
@@ -0,0 +1,38 @@
+BR2_arm=y
+BR2_cortex_a7=y
+BR2_ARM_FPU_VFPV4=y
+BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_13=y
+BR2_TARGET_GENERIC_HOSTNAME="OrangePi_PC_Plus"
+BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the Orange Pi PC Plus"
+BR2_ROOTFS_POST_BUILD_SCRIPT="board/orangepi/orangepi-pc-plus/post-build.sh"
+BR2_ROOTFS_POST_IMAGE_SCRIPT="board/orangepi/orangepi-pc-plus/post-image.sh"
+BR2_LINUX_KERNEL=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.13.11"
+BR2_LINUX_KERNEL_DEFCONFIG="sunxi"
+BR2_LINUX_KERNEL_DTS_SUPPORT=y
+BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun8i-h3-orangepi-pc-plus"
+BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/orangepi/orangepi-pc-plus/linux-extras.config"
+BR2_TARGET_ROOTFS_EXT2=y
+BR2_TARGET_ROOTFS_EXT2_4=y
+# BR2_TARGET_ROOTFS_TAR is not set
+BR2_TARGET_UBOOT=y
+BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
+BR2_TARGET_UBOOT_CUSTOM_VERSION=y
+BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.09"
+BR2_TARGET_UBOOT_BOARD_DEFCONFIG="orangepi_pc_plus"
+BR2_TARGET_UBOOT_NEEDS_DTC=y
+BR2_TARGET_UBOOT_FORMAT_CUSTOM=y
+BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-sunxi-with-spl.bin"
+BR2_PACKAGE_HOST_DOSFSTOOLS=y
+BR2_PACKAGE_HOST_GENIMAGE=y
+BR2_PACKAGE_HOST_MTOOLS=y
+BR2_PACKAGE_HOST_UBOOT_TOOLS=y
+
+# wireless tools
+BR2_PACKAGE_IW=y
+BR2_PACKAGE_WIRELESS_TOOLS=y
+BR2_PACKAGE_WIRELESS_TOOLS_LIB=y
+BR2_PACKAGE_WPA_SUPPLICANT=y
+BR2_PACKAGE_WPA_SUPPLICANT_NL80211=y
+BR2_PACKAGE_WPA_SUPPLICANT_CLI=y
Signature · 1 line
2.11.0
#2 lore raw

PATCH 1/3 board/orangepi: add support for orangepi-pc-plus board

Hello,

Quoted 10 lines · Sergey Matyukevich

This board is a variant of orangepi-pc board. It adds 8GB eMMC and Realtek RTL8189FTV SDIO WiFi chip. This variant has a separate support in U-Boot and kernel. So it makes sense to create a separate entry
for this board in buildroot.

Board support package includes the following components:
- mainline u-boot 2017.09
- mainline kernel 4.13.11

I've applied, after adding an entry to the DEVELOPERS file. One comment, though.

Quoted 4 lines
 board/orangepi/orangepi-pc-plus/boot.cmd           |  8 +++++
 board/orangepi/orangepi-pc-plus/genimage.cfg       | 36 ++++++++++++++++++++
 .../orangepi/orangepi-pc-plus/linux-extras.config  |  8 +++++
 board/orangepi/orangepi-pc-plus/post-build.sh      |  1 +

This common post-build script only generates the U-Boot script. Could you move the boards that use this post-build script to instead use BR2_TARGET_UBOOT_BOOT_SCRIPT ?

Thanks!

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
#3 lore raw

PATCH 1/3 board/orangepi: add support for orangepi-pc-plus board

Hello Thomas,

Quoted 15 lines · Sergey Matyukevich
Quoted 10 lines

This board is a variant of orangepi-pc board. It adds 8GB eMMC and Realtek RTL8189FTV SDIO WiFi chip. This variant has a separate support in U-Boot and kernel. So it makes sense to create a separate entry
for this board in buildroot.

Board support package includes the following components:
- mainline u-boot 2017.09
- mainline kernel 4.13.11

I've applied, after adding an entry to the DEVELOPERS file. One comment, though.

Quoted 8 lines
Quoted 4 lines
 board/orangepi/orangepi-pc-plus/boot.cmd           |  8 +++++
 board/orangepi/orangepi-pc-plus/genimage.cfg       | 36 ++++++++++++++++++++
 .../orangepi/orangepi-pc-plus/linux-extras.config  |  8 +++++
 board/orangepi/orangepi-pc-plus/post-build.sh      |  1 +

This common post-build script only generates the U-Boot script. Could you move the boards that use this post-build script to instead use BR2_TARGET_UBOOT_BOOT_SCRIPT ?

Sure, will do this cleanup with orangepi/pcduino boards as soon as I complete MacchiatoBin pieces.

Regards,
Sergey

#4 lore raw

PATCH 2/3 rtl8189fs: new package

In reply to Sergey Matyukevich

This package adds the rtl8189fs WiFi driver. The driver is sourced from jwrdegoede's and icenowy's work on GitHub:
repo: https://github.com/jwrdegoede/rtl8189ES_linux.git
branch: rtl8189fs

Driver is known to support Realtek RTL8189FTV chip.

---
 DEVELOPERS                       |  1 +
 package/Config.in                |  1 +
 package/rtl8189fs/Config.in      | 10 ++++++++++
 package/rtl8189fs/rtl8189fs.hash |  2 ++
 package/rtl8189fs/rtl8189fs.mk   | 17 +++++++++++++++++
 5 files changed, 31 insertions(+)
 create mode 100644 package/rtl8189fs/Config.in
 create mode 100644 package/rtl8189fs/rtl8189fs.hash
 create mode 100644 package/rtl8189fs/rtl8189fs.mk
DEVELOPERS +1 -0
index cfbe64b0b2..65eeb16cf8 100644
@@ -1473,6 +1473,7 @@ F:	package/mpir/
 
 N:	Sergey Matyukevich <[email protected]>
 F:	package/xr819-xradio/
+F:	package/rtl8189fs/
 
 N:	Sergio Prado <[email protected]>
 F:	package/libgdiplus/
package/Config.in +1 -0
index fe5ccc434e..f80d292d6a 100644
@@ -483,6 +483,7 @@ endmenu
 	source "package/rtl8188eu/Config.in"
 	source "package/rtl8723bs/Config.in"
 	source "package/rtl8821au/Config.in"
+	source "package/rtl8189fs/Config.in"
 	source "package/sane-backends/Config.in"
 	source "package/sdparm/Config.in"
 	source "package/setserial/Config.in"
package/rtl8189fs/Config.in new file +10 -0
new file mode 100644
index 0000000000..ae69b79235
@@ -0,0 +1,10 @@
+config BR2_PACKAGE_RTL8189FS
+	bool "rtl8189fs"
+	depends on BR2_LINUX_KERNEL
+	help
+	  Wireless driver rtl8189fs.
+
+	  https://github.com/jwrdegoede/rtl8189ES_linux.git
+
+comment "rtl8189fs needs a Linux kernel to be built"
+	depends on !BR2_LINUX_KERNEL
package/rtl8189fs/rtl8189fs.hash new file +2 -0
new file mode 100644
index 0000000000..aa844cda70
@@ -0,0 +1,2 @@
+# Locally calculated
+sha256 50ca09d97b22001184231b746d7133e500d3e3998a23a8ea5c3b4da72c4f72c0 rtl8189fs-04b44d437b20f28ba83fcaecc0bdab7f7647fd11.tar.gz
package/rtl8189fs/rtl8189fs.mk new file +17 -0
new file mode 100644
index 0000000000..d7add518f8
@@ -0,0 +1,17 @@
+################################################################################
+#
+# rtl8189fs
+#
+################################################################################
+
+RTL8189FS_VERSION = 04b44d437b20f28ba83fcaecc0bdab7f7647fd11
+RTL8189FS_SITE = $(call github,jwrdegoede,rtl8189ES_linux,$(RTL8189FS_VERSION))
+RTL8189FS_LICENSE = GPL-2.0
+
+RTL8189FS_MODULE_MAKE_OPTS = \
+	CONFIG_RTL8189FS=m \
+	KVER=$(LINUX_VERSION_PROBED) \
+	KSRC=$(LINUX_DIR)
+
+$(eval $(kernel-module))
+$(eval $(generic-package))
Signature · 1 line
2.11.0
#5 lore raw

PATCH 2/3 rtl8189fs: new package

Hello,

Quoted 8 lines · Sergey Matyukevich

This package adds the rtl8189fs WiFi driver. The driver is sourced from jwrdegoede's and icenowy's work on GitHub:

   repo: https://github.com/jwrdegoede/rtl8189ES_linux.git
   branch: rtl8189fs

Driver is known to support Realtek RTL8189FTV chip.

Quoted 10 lines
---
 DEVELOPERS                       |  1 +
 package/Config.in                |  1 +
 package/rtl8189fs/Config.in      | 10 ++++++++++
 package/rtl8189fs/rtl8189fs.hash |  2 ++
 package/rtl8189fs/rtl8189fs.mk   | 17 +++++++++++++++++
 5 files changed, 31 insertions(+)
 create mode 100644 package/rtl8189fs/Config.in
 create mode 100644 package/rtl8189fs/rtl8189fs.hash
 create mode 100644 package/rtl8189fs/rtl8189fs.mk

Applied to master, thanks.

I wonder how many out of tree Realtek drivers are needed to support all those Wifi chips. We already have:

package/rtl8188eu
package/rtl8189fs
package/rtl8723bs
package/rtl8723bu
package/rtl8821au

What's next ? :-)

Best regards,

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#6 lore raw

PATCH 3/3 orangepi-pc-plus: enable WiFi support

In reply to Sergey Matyukevich

Make WiFi work out of the box on orangepi-pc-plus:
- add rtl8xx firmware
- add rtl8189fs driver
- add mdev for module autoloading

---
 configs/orangepi_pc_plus_defconfig | 6 ++++++
 1 file changed, 6 insertions(+)
configs/orangepi_pc_plus_defconfig +6 -0
index ec177286cc..b06b9b1005 100644
@@ -1,6 +1,7 @@
 BR2_arm=y
 BR2_cortex_a7=y
 BR2_ARM_FPU_VFPV4=y
+BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y
 BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_13=y
 BR2_TARGET_GENERIC_HOSTNAME="OrangePi_PC_Plus"
 BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the Orange Pi PC Plus"
@@ -29,6 +30,11 @@ BR2_PACKAGE_HOST_GENIMAGE=y
 BR2_PACKAGE_HOST_MTOOLS=y
 BR2_PACKAGE_HOST_UBOOT_TOOLS=y
 
+# wireless driver and firmware
+BR2_PACKAGE_RTL8189FS=y
+BR2_PACKAGE_LINUX_FIRMWARE=y
+BR2_PACKAGE_LINUX_FIRMWARE_RTL_81XX=y
+
 # wireless tools
 BR2_PACKAGE_IW=y
 BR2_PACKAGE_WIRELESS_TOOLS=y
Signature · 1 line
2.11.0
#7 lore raw

PATCH 3/3 orangepi-pc-plus: enable WiFi support

Hello,

Quoted 9 lines · Sergey Matyukevich

Make WiFi work out of the box on orangepi-pc-plus:
- add rtl8xx firmware
- add rtl8189fs driver
- add mdev for module autoloading

---
 configs/orangepi_pc_plus_defconfig | 6 ++++++
 1 file changed, 6 insertions(+)

Applied to master, thanks.

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#8 lore raw

PATCH 3/3 orangepi-pc-plus: enable WiFi support

In reply to Sergey Matyukevich
Quoted 23 lines · Sergey Matyukevich

Make WiFi work out of the box on orangepi-pc-plus:
- add rtl8xx firmware
- add rtl8189fs driver
- add mdev for module autoloading

---
 configs/orangepi_pc_plus_defconfig | 6 ++++++
 1 file changed, 6 insertions(+)
configs/orangepi_pc_plus_defconfig +1 -0
index ec177286cc..b06b9b1005 100644
@@ -1,6 +1,7 @@
 BR2_arm=y
 BR2_cortex_a7=y
 BR2_ARM_FPU_VFPV4=y
+BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y
 BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_13=y
 BR2_TARGET_GENERIC_HOSTNAME="OrangePi_PC_Plus"
 BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the Orange Pi PC Plus"

configs/orangepi_pc_plus_defconfig BR2_PACKAGE_HOST_GENIMAGE=y · line 37

Quoted 8 lines
configs/orangepi_pc_plus_defconfig +5 -0
@@ -29,6 +30,11 @@ BR2_PACKAGE_HOST_GENIMAGE=y
 BR2_PACKAGE_HOST_MTOOLS=y
 BR2_PACKAGE_HOST_UBOOT_TOOLS=y
 
+# wireless driver and firmware
+BR2_PACKAGE_RTL8189FS=y
+BR2_PACKAGE_LINUX_FIRMWARE=y
+BR2_PACKAGE_LINUX_FIRMWARE_RTL_81XX=y
+

I'm trying to understand here about minimal defconfig vs custom selection of packages, like adding qt5 on this patch[1]. Does wifi here not considered as custom config? if ie true if should be orangepi_pc_plus_wif_defconfig?

[1] https://patchwork.ozlabs.org/patch/839237/

thanks!

Signature · 4 lines
Jagan Teki
Senior Linux Kernel Engineer | Amarula Solutions
U-Boot, Linux | Upstream Maintainer
Hyderabad, India.
#9 lore raw

PATCH 3/3 orangepi-pc-plus: enable WiFi support

Hello,

Quoted 10 lines · Jagan Teki

configs/orangepi_pc_plus_defconfig BR2_PACKAGE_HOST_GENIMAGE=y · line 37

Quoted 5 lines
configs/orangepi_pc_plus_defconfig +5 -0
+# wireless driver and firmware
+BR2_PACKAGE_RTL8189FS=y
+BR2_PACKAGE_LINUX_FIRMWARE=y
+BR2_PACKAGE_LINUX_FIRMWARE_RTL_81XX=y
+  

I'm trying to understand here about minimal defconfig vs custom selection of packages, like adding qt5 on this patch[1]. Does wifi here not considered as custom config? if ie true if should be orangepi_pc_plus_wif_defconfig?

As usual, the boundaries are not 100% strict and fixed. However, we have considered for a number of boards that have WiFi support that it makes sense to enable the relevant driver and firmware to enable WiFi.

This is quite different from Qt5: for WiFi, there is basically no other option than using this firmware and this driver. For graphics, you may want to use Qt5. But you may also want to use X11, or Wayland/Weston, or, etc. So Qt5 is a lot less "the obvious thing that everybody will obviously want to use on this board".

Also, installing this firmware file and building this driver probably adds 20 seconds to the build time of the defconfig. It's not exactly the same for Qt5 :-)

Best regards,

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com