Archive

Posts Tagged ‘nanopi’
Orange Pi Development Boards

TECHBASE ModBerry​ M300 IoT Gateway Adds Support for NanoPi and Orange Pi Allwinner H5 Boards

February 8th, 2018 1 comment

Announced at the end of last year TECHBASE launched the ModBerry​ M300, a Linux IoT gateway powered by FriendlyELEC NanoPi NEO board equipped with Allwinner H3 Cortex A7 processor.

The company has now made four extra variants of the gateway with Allwinner H5 quad core Cortex A53 based development boards from FriendlyELEC and Shenzhen Xunlong:

  • Modberry M300 N2 – Based on NanoPi NEO2
  • Modberry M300 N2+ – Based on NanoPi NEO Plus2 adding 8GB eMMC flash, WiFi & Bluetooth 4.0, and an extra USB port over the N2 model
  • Modberry M300 O1 – Based on Orange Pi Zero Plus
  • Modberry M300 O2 – Based on Orange Pi Zero Plus2 adding 8GB eMMC flash, HDMI, one extra USB port, and Bluetooth 4.0 over the O1 model, but falling back to 10/100 Ethernet, while all three models above come with Gigabit Ethernet

To avoid confusion, the original NanoPi NEO model has changed name to ModBerry M300 N1. The specifications summary / comparison between the 5 models can be found in the table below.

Click to Enlarge

All Modberry gateways also support internal “ExCard” expansion modules and “modems” with the latest options including:

  • SuperCap​ expansion to provide constant power supply as a UPS option
  • OLED 0.96” & OLED 1.3″ screens
  • ESP32 module as a security chip, to add a firewall into control installation
  • Aluminum case​
  • Support for 2.5″ SATA drive or M.2 2242 SSD via JMS567 USB to SATA bridge

Existing options are listed below with RS485, M-Bus, analog output, digital output, Zigbee, GPS, 3D, LTE, and so on.

Click to Enlarge

The updated Modberry M300 models are available on demand with pricing depending on project requirements (options / volume). Datasheets and other documentation will be released mid February, at which time, you should also be able to get more details on Modberry microsite.

Linux 4.15 Release – Main Changes, Arm and MIPS Architectures

January 30th, 2018 13 comments

Linus Torvald has released Linux 4.15 last Sunday:

After a release cycle that was unusual in so many (bad) ways, this last week was really pleasant. Quiet and small, and no last-minute panics, just small fixes for various issues. I never got a feeling that I’d need to extend things by yet another week, and 4.15 looks fine to me.

Half the changes in the last week were misc driver stuff (gpu, input, networking) with the other half being a mix of networking, core kernel and arch updates (mainly x86). But all of it is tiny.

So at least we had one good week. This obviously was not a pleasant release cycle, with the whole meltdown/spectre thing coming in in the middle of the cycle and not really gelling with our normal release cycle. The extra two weeks were obviously mainly due to that whole timing issue.

Also, it is worth pointing out that it’s not like we’re “done” with spectre/meltdown. There is more work pending (arm, spectre-v1, misc details), and perhaps equally importantly, to actually get the biggest fix for the indirect branch mitigations, you need not just the kernel updates, you need to have a compiler with support for the “retpoline” indirect branch model.

You can do

cat /sys/devices/system/cpu/vulnerabilities/spectre_v2

and if you don’t have a compiler that supports the retpoline mitigations, you’ll get:

Vulnerable: Minimal generic ASM retpoline

because only the assembly code (not the C code) will have the retpoline mitigation. So keep that in mind.

Anyway, while spectre/meltdown has obviously been the big news this release cycle, it’s worth noting that we obviously had all the *normal* updates going on too, and the work everywhere else didn’t just magically stop, even if some developers have been distracted by CPU issues. In the *big* picture, 4.15 looks perfectly normal, with two thirds of the full 4.15 patch being about drivers, and even the arch updates are dominated by the arm DTS diffs, not by CPU bug mitigation.

So the news cycle notwithstanding, the bulk of the 4.15 work is all the regular plodding “boring” stuff. And I mean that in the best possible way. It may not be glamorous and get the headlines, but it’s the bread and butter of kernel development, and is in many ways the really important stuff.

Go forth and play with it, things actually look pretty good despite everything.

And obviously this also means that the merge window for 4.16 is open. I already have a number of pull requests pending that I will start merging tomorrow. Hopefully we’ll have a _normal_ and entirely boring release cycle for 4.16. Because boring really is good.

Linux 4.14 extended memory limits to 128 PiB (Pebibyte = 1.024 Petabyte)  of virtual address space and 4 PiB of physical address space, added zstd compression in Btrfs and Squashf file systems, improved kernel traces, and implemented zero-copy from user memory to socket among many other changes.

Linux 4.15 was especially newsworthy due to the Spectre/Meltdown debacle and initial fixes affecting all major silicon vendors, and operating systems, but that are also other notable changes:

  • Initial RISC-V Support with device tree bindings for RISC-V CPUs, early boot and initialization code, the Linux atomic and memory model intrinsics, some interrupt and timer infrastructure, paging and MMU related code, and  an implementation of the user-facing ABIs for RISC-V Linux systems.
  • Improved power management in systems with SATA Link Power Management – Because of the lack of documentation of the ALPM (Aggressive Link Power Management), and because  it easily caused data corruption, Linux has been unable to properly implement ALPM support for years. Lack of ALPM support prevents the system from entering in deep power saving states, which means a much worse battery life for Linux users on systems with ALPM. This lack of implementation leads to worse battery life in systems that support ALPM, but now a patch has been merged that implements a better default behavior for ALPM without corrupting data. Linux users with ALPM (e.g. on Intel Haswell, Broadwell, Skylake) should see better battery life with for example Thinkpad T440s laptop saving 0.9-1.2W when idle.
  • AMD Secure Encrypted Virtualization – Linux 4.14 added AMD Secure Memory Encryption, and now Linux 4.15 adds initial support for AMD Secure Encrypted Virtualization, which integrates the memory encryption support in the AMD-V virtualization architecture to support encrypted virtual machines
  • User-Mode Instruction Prevention Intel Security feature – Spectre/Meltdown was not the only security issue addressed in Linux 4.15, and the release also added support for “User Mode Instruction Prevention” found in Intel processor, that disable some instructions ( SGDT, SLDT, SIDT, SMSW and STR) from being executed in user mode in order to reduce the tools available to craft some type of privilege escalation attacks.

As usual, I’ll also provide a summary of some changes specific to the Arm architecture:

  • Allwinner:
    • Allwinner A10/A20/A31 –  Drivers for Display, HDMI controller,
    • Allwinner A33 – Audio codec fixes
    • Allwinner A64 – DMA controller
    • sunxi-ng clocks –  Audio PLL sigma-delta modulation support for accurate audio playback
    • Device tree changes:
      • Allwinner A10/A20 – CCU sunxi-ng style clock conversion, Display pipeline, HDMI controller
      • Allwinner A31 – HDMI controller, I2S controllers
      • Allwinner A64 –  DMA controller, EMAC, SPI
      • Allwinner H3/H5 – EMAC
      • Allwinner R40 – Basic dtsi
    • Cleanups – Removal of GPIO pinmux settings for A10 and A80
    • New devices & boards – TBS A711 tablet (Allwinner A83T), FriendlyARM NanoPi NEO Plus2, Olimex A20-OLinuXino-Micro eMMC variant, Banana Pi M2 Ultra, Banana Pi M2 Berry
  • Rockchip
    • Clocks – New clock ids for Rockchip rk3188 and rk3368 SoCs
    • Thermal – Add Rockchip RV1108 support in rockchip thermal driver
    • Pinctrl – Various non-critical fixes
    • LVDS support in DRM driver
    • New boards – Amarula Vyasa single-board computer (RK3288)
    • Device tree changes:
      • Support for the RGA (raster graphics accelerator) on rk3399 and efuses on rk3368
      • Enablement of display support on the rk3399-firefly, which got its default serial set as well and got cec support as well.
      • Gru boards got their touchpad support refined to actually mark the button correctly and also git their rt5514 dsp added.
      • RK3328 eval board got its cpu regulator and mmc nodes
      • CEC support for the two rk3288-firefly variants and general hdmi support for the firefly-reload.
      • Thermal support for the rv1108
      • Vyasa from Amarula Solutions using a rk3288 and core LVDS node for the newly added driver+binding.
      • bindings + nodes for the Mali-Utgard GPUs found on some Rockchip socs like RK3036 and RK3188. (Lima project can render a red triangle to a png file).
  • Amlogic
    • Clocks – Amlogic Video Processing Unit VPU and VAPB clks
    • nvmem – meson-mx-efuse: fix reading from an offset other than 0
    • adc – meson-saradc: fix the bit_idx of the adc_en clock
    • Various fixes – GPIO interrupt fixes, socinfo fix for GX series, typo
    • Power management support for Amlogic GX family
    • SMP support for Amlogic Meson8/8b
    • MMC – meson-mx-sdio: New driver for the Amlogic Meson8 and Meson8b SoCs
    • SoC info driver for 32-bit Amlogic SoCs
    • New boards / devices – Amlogic Meson-AXG A113D based development board, Khadas VIM2 board, Tronsmart Vega S96 set-top-box
    • Device tree changes:
      • 64-bit
        • Add support for new GPIO IRQ driver
        • Support for A113D SoC
        • reserved memory fixups
        • gpio-names cleanups
        • MMC cleanups, enable high-speed modes
        • Misc cleanups
      • 32-bit
        • Add efuse node
        • Add SDIO MMC controller
        • Reserved memory fixes
        • SoC info driver nodes
        • Enable USB host controller
  • Samsung
    • Clocks – Updated runtime PM support for Samsung exynos5433/exynos4412 providers, removed clkdev aliases on Samsung SoCs
    • Minor drivers cleanups, e.g. remove of Exynos4212 related dead code (no more support for this SoC).
    • New boards – ODROID HC1 board for mini NAS / home cloud
    • Samsung DTS ARM changes
      • Add new board: Hardkernel Odroid HC1.
      • Fix incomplete Odroid-XU3/4 thermal-zones definition leading to possible overheat if first pair of A7+A15 cores is idle but rest of CPUs are busy.
      • Add capacity-dmips-mhz properties for CPUs of octa-core SoCs.
      • Add power button to Odroid XU3/4.
      • Improvements in Gscaler, HDMI and Mixer blocks on Exynos5.
      • Add suspend quirk to DWC3 USB controller to fix enumeration of SuperSpeed devices on Odroid XU4.
      • Add HDMI and MHL to Trats2.
      • Cleanups (redundant properties and nodes).
    • Samsung defconfig changes
      • Enable USB3503 on multi_v7 for Odroid U3.
      • Enable USB Attached SCSI for Odroid HC1.
  • Qualcomm
    • Clocks – RPM clk support on Qualcomm MSM8996/MSM8660 SoCs
    • Regulator – Support for Qualcomm PMI8994
    • Added USB modems – Quectel BG96 Qualcomm MDM9206 based IoT modem, Sierra Wireless EM7565 devices based on Qualcomm Snapdragon X16 LTE-A modem
    • Drivers updates
      • Add Qualcomm Remote Filesystem Memory driver
      • Add OF linkage for RMTFS
      • Add SCM firmware APIs for download mode and secure IO service
      •  Add SMEM support for cached entries
      • Add SMEM support for global partition, dynamic item limit, and more hosts
    • New devices – Fairphone 2, Sony Xperia Z2 tablet
    • Device tree changes:
      • Add MSM8660 GSBI6/7 nodes
      • Disable GSBI6 at APQ8064 platform level
      • Fix phy cells on APQ8064
    • ARM64 updates:
      • Add PCIE support to relevant MSM8996 based boards
      • Add RPM clock controller node on MSM8996
      • Add dload address on MSM8916 and MSM8996
      • Add MBHC button support on APQ8016 SBC
      • Add RTMFS specific compatible for rmtfs memory node
      • Fixups for MSM8916 GPIO line names and MDP address length
    • Defconfig updates:
      • 32-bit
        • Enable Sony Z2 tablet options
        • Enable USB on APQ8064/MSM8974
        • Fixup/catchup config to support newer options
      • 64-bit (ARM64):
        • Enable QCOM IOMMU
        • Enable Qualcomm USB options (re-enable Qualcomm DB410c USB)
  • Mediatek
    • New clock driver for Mediatek MT2712 and MT7622
    • Mediatek MT7622 RTC driver
    • Power management – Add missing module information to the Mediatek cpufreq driver module
    • Drivers update:
        • add 32 bit read/write support to pwrap
        • add mt7622 support to pwrap
        • test build all mediatek soc drivers
      • fix compiler issues
      • clean up Kconfig description
    • DTS updates:
      • 32-bit
        • mt7623 update nodes to binding description
        • mt2701 add display pwn nodes
        • mt2701 update audio node description
      • 64-bit – mt2712: add cpuidle support
  • Other new ARM hardware platforms and SoCs:
    • Actions Semi – Cubieboard6 SBC (Actions S500 )
    • Broadcom – Broadcom Hurricane 2 based Ubiquiti UniFi Switch 8, Broadcom bcm47xx based Luxul XAP-1440/XAP-810/ABR-4500/XBR-4500 wireless access points and routers
    • NXP – i.MX51: Zodiac Inflight Innovations RDU1 board; i.MX53: GE Healthcare PPD biometric monitor;  i.MX6: Pistachio single-board computer, Vining-2000 automotive diagnostic interface, Ka-Ro TX6 Computer-on-Module in additional variants
    • Realtek – RTD1295 based set-top-boxes MeLE V9 and PROBOX2 AVA
    • Renesas –  R-Car V3M (R8A77970) SoC and “Eagle” reference board, Renesas H3ULCB and M3ULCB “Kingfisher” extension infotainment boards, Renesas r8a7745 based iWave G22D-SODIMM SoM

Finally, some of the changes made for MIPS architecture:

  • Fixes:
    • ralink: Fix MT7620 PCI build issues (4.5)
    • Disable cmpxchg64() and HAVE_VIRT_CPU_ACCOUNTING_GEN for 32-bit SMP (4.1)
    • Fix MIPS64 FP save/restore on 32-bit kernels (4.0)
    • ptrace: Pick up ptrace/seccomp changed syscall numbers (3.19)
    • ralink: Fix MT7628 pinmux (3.19)
    • BCM47XX: Fix LED inversion on WRT54GSv1 (3.17)
    • Fix n32 core dumping as o32 since regset support (3.13)
    • ralink: Drop obsolete USB_ARCH_HAS_HCD select
  • Build system:
    • Default to “generic” (multiplatform) system type instead of IP22
    • Use generic little endian MIPS32 r2 configuration as default defconfig instead of ip22_defconfig
  • FPU emulation – Fix exception generation for certain R6 FPU instructions
  • SMP – Allow __cpu_number_map to be larger than NR_CPUS for sparse CPU id spaces
  • Miscellaneous:
    • Add iomem resource for kernel bss section for kexec/kdump
    • Atomics: Nudge writes on bit unlock
    • DT files: Standardise “ok” -> “okay”
  • Minor cleanups – Define virt_to_pfn(), Make thread_saved_pc static, simplify 32-bit sign extension in __read_64bit_c0_split(), etc…
  • Platform support:
    • BMIPS – Enable HARDIRQS_SW_RESEND
    • Broadcom BCM63XX – Add clkdev lookup support, update clk driver, UART driver, DTs to handle named refclk from DTs, split apart various clocks to more closely match hardware, add ethernet clocks
    • Cavium Octeon – Remove usage of cvmx_wait() in favour of __delay()
    • ImgTec Pistachio – DT: Drop deprecated dwmmc num-slots property
    • Ingenic JZ4780 – Add NFS root to Ci20 defconfig, aAdd watchdog to Ci20 DT & defconfig, and allow building of watchdog driver with this SoC
    • Generic (multiplatform) – Migrate xilfpga (MIPSfpga) platform to the generic platform
    • Lantiq xway – Fix ASC0/ASC1 clocks”

For full details, check out the full Linux 4.15 changelog – with comments only – generated using git log v4.14..v4.15 --stat. You may also consider reading Kernelnewsbies’s Linux 4.15 changelog.

Year 2017 in Review, Top 10 Posts, and Some Fun Stats

December 31st, 2017 21 comments

2017 is coming to an end, and as I do every year, I’ll take a look back at the year that was on CNX Software. The pace of development boards launches has not slowed down this year, and we get an even wider range from the low-end with Orange Pi or NanoPi boards, to much more powerful ARM boards, and some new entrants like Libre Computer. The same is true for TV boxes, most of which now support 4K HDR, ranging from ultra cheap models selling for less than $20 to higher end Android TV boxes, while mini PCs were dominated by Intel Apollo Lake models, although some Cherry Trail products were also launched.

Processor-wise, Amlogic launched more Amlogic S905X derivatives with S905W/S905D/S905Z, which are popular in the TV box market. Rockchip’s most interesting processor this year was RK3328 quad core Cortex A53 processor designed for 4K HDR Android TV boxes, but also popular with single board computers thanks to Gigabit Ethernet and USB 3.0 interfaces that provide good I/O performance. Allwinner H2+/H3/H5 were launched last year, but they kept being used in cheap development boards, retro game consoles, etc.. The company also launched A63 SoC for 2K tablets, and H6 for 4K OTT TV boxes, and we can expect the latter not only to be found in TV boxes such as Zidoo H6 Pro, but in more Orange Pi H6 boards, and likely other products in 2018 since beside media capabilities, the processor also supports Gigabit Ethernet, USB 3.0, and PCIe. Intel’s Celeron and Pentium Apollo Lake processors dominated the entry-level Windows mini PCs market this year, and Linux was much better supported than in Bay Trail / Cherry Trail processors, but few manufacturers decided to offer Apollo Lake mini PC pre-installed with Ubuntu or other Linux distributions.

2017 was also an interesting year for the Internet of Things (IoT) with Espressif ESP32 going into full gear, and prices dropping to $5 for maker boards. Other WiFi IoT solutions that looked promising last year such as RTL8710AF, did not really took off in a big way. LPWAN (Low Power Wide Area Network) solutions got even more traction with LoRa dominating, but far from being alone with Sigfox, and the emergence of 3GPP standards like NB-IoT and eMTC.

While I had written articles about 3D printing in the past, it really became a proper category on the blog this year, thanks to Karl’s reviews, and 3D printers provided by GearBest. I’d also like to thank Ian Morrison (Linuxium), TLS, Blu, Nanik who helped with reviews and/or articles this year.

Top 10 Posts Written in 2017

I’ve again compiled a list of the most popular posts of 2017 using the pageviews from Google Analytics, but for a change, I’ll show the results in reverse order:

  1. Google Assistant SDK Turns Your Raspberry Pi 3 into Google Home (May 2017) – Voice assistants like Amazon Alexa or Google Assistant went beyond the companies’own products, and Google Assistant SDK release allowed developers to make their own DIY smart speaker based on Raspberry Pi 3 board, or other ARM Linux boards. I could successfully implement my own using an Orange Pi Zero kit.
  2. Mecool BB2 Pro Review – TV Box with DDR4 Memory – Part 2: Android Firmware, Benchmarks, Kodi (January 2017) – Mecool BB2 Pro was one of the first Amlogic S912 octa-core TV boxes with DDR4 memory, but my tests did not show any benefits over DDR3 memory.
  3. Mecool KI PRO Hybrid Android TV Box with Amlogic S905D SoC, DVB-T2 & DVB-S2 Tuners Sells for $80 (May 2017) – For some reasons, post about VideoStrong/Mecool Android set-top boxes are quite popular on CNX Software, and KI PRO was the first model based on Amlogic S905D processor with support for multiple demodulators.
  4. Orange Pi 2G-IoT ARM Linux Development Board with 2G/GSM Support is Up for Sale for $9.90 (March 2017) – “Cellular IoT Linux board for $10? Where’s the buy button?” might have been the first reaction to many people. But when buyers received their board, it was a struggle and may still be, since it was based on a  RDA Micro processor for phones poorly supported in Linux.
  5. Installing Ubuntu 17.04 on CHUWI LapBook 14.1 Apollo Lake Laptop (February 2017) – People want their cheap and usable Ubuntu laptop, and if manufacturers won’t make one for them, they’ll find ways to make their own. Sadly, CHUWI massively changed the hardware, and it’s not such a good solution anymore.
  6. ASUS Tinker Board is a Raspberry Pi 3 Alternative based on Rockchip RK3288 Processor (January 2017) – A large company like ASUS entering the maker board market, and the solution inspired from Raspberry Pi 3, but more much powerful. That got people interested!
  7. Creality CR-10 3D Printer Review – Part 2: Tips & Tricks, Octoprint, and Craftware (May 2017) – It was the year of cheap $100 to $200 3D printer, but CNX Software visitors were more interested in a better model, and Creality CR-10 review was the most popular 3D Printer review/post this year.
  8. Mecool KIII Pro Hybrid STB Review – Part 2: Android Firmware, TV Center, and DVB-T2 & DVB-S2 App (March 2017) – VideoStrong sells some inexpensive Android TV boxes with tuner under their Mecool, and KIII Pro was their first octa-core model with both DVB-T/T2 and DVB-S2 tuners.
  9. ASUS Tinker Board’s Debian & Kodi Linux Images, Schematics and Documentation (January 2017) – ASUS board was somehow started selling before the company intended to, and while firmware & documentation were there, they were hard to find, so people looked for that information, and found it on CNX Software.
  10. MINIX NEO U9-H Media Hub Review – Part 2: Android 6.0 Firmware & Kodi 17 (March 2017) – Apparently, I’m not the only to consider MINIX NEO U9-H to be one of the best Android TV boxes, as my review of the media hub was the most read post of 2017.

Stats

981 posts were published in 2017. Let’s go straight to users’ country and city location data.

The top five countries have not changes, but this year Germany overtook the United Kingdom in second position. Traffic from India increased on a relative basis, and Australia made it to the top ten at the cost of Russia. London and Paris kept the two top steps, but Bangkok rose to third position, while last year third, Tel aviv-Yafo went away completely from the list. New York is gone being replaced by Warsaw in 8th position.

The list of the most used operating systems, and browsers is fairly stable, but the trends noticed in past years continues, with Windows share of traffic going down, Android going up, and Linux stable, while Chrome dominated even more, with most other browsers going down in percentage basis, except Edge that is very slowly replacing Internet Explorer, and Samsung Internet that replaced Opera mini in the list.

Desktop traffic still rules, but mobile + tablet traffic now accounts for around a third of the traffic.

Finally, I went to dig into pagespeed data with pages loading in 15.58 seconds on average. I then filtered the countries with more than 5,000 pageviews, and CNX Software pages and posts loaded fastest in Portugal, Denmark, and Macedonia. However, people in Venezuela need to wait close to 2 minutes for a page to load on average, and in China and Iran around one minute.

Next year looks promising, and I expect to test Gemini Lake mini PC, and maybe some ARM based mini PCs or laptops, but I’ll review less TV boxes as due to some new regulations I can’t easily import them. The regulatory framework is now in place for LPWAN standards, and I should be able to start playing with LoRa and NB-IoT in 2018, using local services, or my own gateway(s). I’ll keep playing with development boards, as I’m expecting interesting Allwinner H6, Realtek RTD129x, Hilsicon, and other platforms in the year ahead, as well as various IoT products.

I’d like to come together with some of the devices and boards reviewed in 2017 (and a Linux tux) to wish you all a prosperous, healthy, and happy new year 2018!

Click to Enlarge

NanoPi NEO Core and NEO Core2 Allwinner H3/H5 Systems-on-Module Launched for $7.99 and Up

December 13th, 2017 32 comments

FriendlyELEC has launched many cool NanoPi development boards such as NanoPi NEO2, NanoPi A64, or more recently NanoPi Duo based on Allwinner H- or A- series ARM processors, as well as some models based on Samsung/Nexcell or Amlogic SoC.

The company has now launched two other NanoPi products that are a bit different since they are systems-on-module – or could even be considered minimal development boards – with namely NanoPi NEO Core powered by Allwinner H3 quad core 32-bit processor, and NanoPi NEO Core2 based on Allwinner H5 quad core 64-but processor.

NanoPi NEO Core

Specifications:

  • SoC – Allwinner H3 quad core ARM Cortex-A7 processor up to 1.2GHz with Mali-400MP GPU
  • System Memory – 256MB or 512MB DDR3 RAM
  • Storage – NC/8GB/16GB/32GB eMMC flash, micro SD slot
  • USB – 1x micro USB OTG port also used for power input
  • Expansion – 2x 2.54mm pitch 24-pin headers, 1x 2.54mm pitch 20-pin header exposing:
    • Connectivity – 10/100M Ethernet
    • USB – 3x USB Host port
    • 4-pin debug serial port
    • 4-pin audio input/output port
    • UART, SPI, I2C, GPIO, IR etc…
  • Power Supply – 5V/2A
  • Dimensions – 40 x 40mm
  • Temperature measuring range – -40℃ to 80℃

Click to Enlarge

A Ubuntu Core Xenial image with Linux 4.14 is provided, and documentation can be found in the Wiki.

The board is sold for $7.99 with no flash and 256MB RAM, but a version with 512MB RAM and 8GB eMMC flash is also offered for $10 extra.

NanoPi NEO Core2

The 64-bit version of the board has basically the same specifications, except for the different processor, more memory, and an extra Realtek RTL8211E Gigabit Ethernet transceiver:

  • SoC – Allwinner H5 quad core ARM Cortex-A53 processor with a Mali-450MP GPU
  • System Memory – 512MB or 1GB DDR3 RAM
  • Storage – 8GB/16GB/32GB eMMC flash, micro SD slot
  • USB – 1x micro USB OTG port also used for power input
  • Expansion – 2x 2.54mm pitch 24-pin headers, 1x 2.54mm pitch 20-pin header exposing:
    • Connectivity – Gigabit Ethernet via RTL8211E transceiver
    • USB – 3x USB Host port
    • 4-pin debug serial port
    • 4-pin audio input/output port
    • UART, SPI, I2C, GPIO, IR, etc…
  • Misc – 2x LEDs for power and system status
  • Power Supply – 5V/2A
  • Dimensions – 40 x 40mm
  • Temperature measuring range – -40℃ to 80℃

Both NanoPi Core and Core2 modules appear to be pin-to-pin compatible. NanoPi NEO Core2 runs a different firmware image also based on Ubuntu Xenial with Linux 4.14, and more technical info is listed in the Wiki. I also suspect both boards are software compatible with NanoPi NEO / NEO2, so other firmware such as Armbian images may also run without modifications.

FriendlyELEC does not offer a version without flash, and actually only one version is for sale now with 1GB/8GB configuration for $24.99.

Mini Shield for NanoPi NEO Core/Core2

Mini Shield with NanoPi NEO Core Board and M.2 SSD

You could wire your NEO Core(2) board yourself, if you want to get started quickly, or something that works out of the box with USB, Ethernet, and audio connectors, as well an M.2 slot, the Mini Shield is here to help with the following specs:

  • Storage – 1x M.2 2242 SSD socket
  • Connectivity – 1x Ethernet port
  • USB – 2x USB Host
  • Audio – audio input and 1 x audio output
  • Expansion – 2x 13-pin GPIO header
  • Debugging – 1x Serial debug port and
  • Misc – 1x button, 1x IR receiver
  • Dimensions – 85 x 56 mm (Raspberry Pi form factor, compatible with enclosures)

Mini Shield can be purchased as option for $10.99 extra on NanoPi NEO Core or Core2 product pages. It has its own Wiki page where you can find additional hardware details.

Armbian v5.35 Released with Linux 4.13, U-boot v2017.09, New Boards Support

November 27th, 2017 19 comments

Armbian v5.35 has been released last Friday as a major update that brings Linux mainline kernel to version 4.13, U-Boot mainline to version v2017.09, adds support for 7″ Raspberry Pi display, Realtek WiFi drivers (mainline), and new stable hardware support for NanoPi Duo, Pinebook, and Orange Pi R1.

Some other boards got experimental support, including Le Potato, NanoPi NEO 2, Orange Pi Zero Plus, Orange Pi Zero Plus 2 (H5). The desktop version of the images gets a full featured XFCE terminal, OpenVPN connector, a new wallpaper, and various other changes and fixes.

Armbian v5.35 on NanoPi NEO with Legacy Kernel

armbian-config is normally used to configure the board for example networking configuration, but the utility has become even more useful with support for Hotspot, Bluetooth, SSH server configuration, swtich between stable & beta builds and between kernel applications, adds the ability to start an RDP server, and install third party software such as SAMBA, OpenMediaVault, PiHole, Transmission BT, and so on.

If you have an existing installation, you can simply upgrade with the following commands, as I did for NanoPi NEO board above:

For a fresh installation, download the images from the download page instead.

TECHBASE ModBerry​ M300 Linux IoT Gateway ​is Powered by NanoPi NEO Board

November 15th, 2017 2 comments

We’ve previously covered TECHBASE Modberry industrial automation gateways based on popular development boards such as Raspberry Pi 3, NanoPi M1 Plus, and Intel Cherry Trail’s UP board, and designed for applications such as PLC controllers or MODBUS gateway / router.

The company has now launched a new version with Modberry M300 powered NanoPi NEO Allwinner H3 board.

ModBerry​ M300 gateway specifications:

  • SoC – Allwinner H3 quad core Cortex A7 @ 1.2 GHz with an ARM Mali-400MP2 GPU
  • System Memory – 512 MB DDR3 RAM
  • Storage – micro SDHC card slot
  • Connectivity
    • 10/100M Ethernet port
    • Optional Wi-Fi (IEEE 802.11 b/g/n, speed up to 150 Mbps, 64/128-bit WEP, WPA, WPA2), LTE/3G modem, GPS module, ZigBee, Bluetooth, LoRa, Wireless M-Bus, Nb-IoT
  • USB – 1x USB 2.0 host port, 2x USB 2.0 host header
  • Expansion I/Os
    • 2x DIO ports
    • 1x RS-232, 1x RS-485
    • 1x 2-pin mBus master for up to 10 slave devices
    • Optional up to 3 ExCard I/O modules for more RS-232/485 ports, Ethernet ports, PCIe slots, analog input and output, digital I/Os, relays, M-Bus interface, etc…
  • Misc – RTC with battery, watchdog timer
  • Power Supply – 9~30V DC up to 20Watts without modem; 40W with modems
  • Dimensions – 91 x 71 x 61 mm (ABS case with DIN rail mount)
  • Weight – 100 grams
  • Operating Conditions
    • Temperature –  Standard : 0 ~ 60°C; extended range: -40 ~ 70°C
    • Humidity – 5 ~ 95% RH (non-condensing)

Modberry M300 Features and Options – Click to Enlarge

The gateway can run Debian, or Ubuntu Core based on Linux 4.11.2+ and u-boot, as well as the company’s iMod software to handle various industrial or other protocols such as M-Bus, Modbus, SNMP, MQTT, etc…

Pricing is not available just like with other Modberry gateways, and you’ll find more details on the products page. Not directly related, but found in the same TECHBASE’s November 2017 newsletter, the company also mentions M-Bus/WM-Bus support for their Moduino ESP32 gateways.

Linux 4.14 Release – Main Changes, ARM & MIPS Architecture

November 13th, 2017 7 comments

Linus Torvalds has announced the release of Linux 4.14:

No surprises this week, although it is probably worth pointing out how the 0day robot has been getting even better (it was very useful before, but Fengguang has been working on making it even better, and reporting the problems it has found).

Sure, some of the new reports turned out to be just 0day doing things that just don’t work (ie KASAN with old gcc versions, but also doing things like loading old ISA drivers in situations that just don’t make sense – remember when you couldn’t even ask if the hardware existed or not, and just had to know), but even then it’s been all good.

The appended shortlog is obviously only for the (small) haul since rc8, and it really is tiny. Not very many commits, and they are small. The biggest thing that stands out in the diffstat is the “leaking_addresses” perl script, which is actually under active development, but I put the first version in for 4.14 just so that people could see that initial state and start looking at the end result and perhaps ask themselves “should my code make these kernel addresses visible to user space”.

The actual changes will hopefully start percolating into 4.15, with one notable likely early change (which has been discussed extensively on the list) being to just hash any “%p” addresses by default. We used to have strict modes that just zeroed the address out, but that was actually counter-productive, in that often people use the address as a “kernel object identity” for debugging (or for cross-correlation -think network sockets), and so just clearing the pointer value makes those kinds of uses pointless. But using a secure hash allows for those kinds of identity uses, while not actually leaking the address itself.

(Other situations where the actual address is relevant then need other approaches – we’ll be restricting /proc/kallsyms only to entities that actually need them etc etc).

Anyway, apart from that one script, the rest of it really is one-liners or “few-liners”.

The most noticeable last-minute change is probably that we had to revert the code that showed a good MHz value in /proc/cpuinfo even for the modern “CPU picks frequency dynamically” case. It worked fine, but it was much too expensive on machines with tens or hundreds of CPU cores. There’s a cunning plan, but it didn’t make 4.14, so we’ll get it working and then back-port.

Anything else is pretty esoteric, you can just read the changelog..

And with this, the merge window for 4.15 is obviously open. As mentioned in the late rc announcements, the extra week for rc8 means that now Thanksgiving week ends up happening during the second half of the merge window, and I’ll be off on a family vacation.

We’ll see how that goes.

I might decide that I’ll extend the merge window if I feel that I can’t be responsive enough.

Or maybe you guys won’t even notice, because I _will_ have my laptop and Internet access.

Or maybe I will just decide that 4.14 was a painful release, and any late stragglers for 4.15 are not worth _another_ painful release, and I’ll just say “tough luck, you were late to the merge window, and I felt more like being out in the sun than taking your second-week pull request”.

Because it really would be lovely to have a smaller and calmer release for 4.15.

Anyway, go out and test the new 4.14 release, that is slated to be the next LTS kernel – and start sending me pull request for the 4.15 merge window.

Linux 4.13 brought us new features such as support for non-blocking buffered I/O operations at the block level, AppArmor security module’s “domain labeling” code, kernel-based TLS implementation for better performance, and CIFS/SAMBA default change to v3.0 for better security, among many other changes.

Some newsworthy changes in Linux 4.14 include:

  • Bigger memory limits – x86-64 used to be limited by 4-level paging to 256 TiB of virtual address space and 64 TiB of physical address space. Some vendors already reached the limit with servers equipped with 64 TiB of memory, so support for 5-level paging has been introduced, increasing the limits to 128 PiB of virtual address space and 4 PiB of physical address space.
  • Added AMD Secure Memory Encryption – Secure Memory Encryption can be used to protect the contents of DRAM from physical attacks on the system. Read LWN article or AMD whitepaper for details.
  • Better kernel traces with the ORC unwinder – An “unwinder” is what prints the list of functions (aka. stack trace, callgraph, call stack…) that have been executed before reaching a determinate point of the code. The new unwinder is called ORC (Oops Rewind Capability), works more reliably than the current unwinder, and does not require adding code anywhere, hence having not effect on text size or runtime performance
  • Compression in Btrfs and Squashfszstd compresses at speeds close to lz4 at compression ratio comparable to lzma. Support for zstd compression had been added to both Btrfs and Squash. See benchmarks in commit messages for Btrsfs and Squashfs.
  • Zero-copy from user memory to sockets – The MSG_ZEROCOPY socket flag enables zero copy mechanism to common socket send calls. It is generally only effective at writes over around 10 KB. Checkout the documentation for more details.

Linux 4.14 will be a long term support kernel with 6-years of support, so it will be found in devices for the years to come. [Update: While Linux 4.4 will be supported for 6 years until February 2022, the plan is to support Linux 4.14 until January 2020, right from the horse’s mouth]

The ARM architecture has gone through many changes as per usual. Here’s a non-exhaustive list of changes:

  • Allwinner:
    • Allwinner A10s – HDMI DDC I2C Adapter,HDMI CEC support
    • Allwinner A10/A20 – CCU Clock-ng support
    • Allwinner A64 – SRAM controller driver
    • Allwinner A83T –  SD/MMC support, AXP813 PMIC,USB support
    • Allwinner H3 – I2S support
    • Allwinner R40 –  CCU sunxi-ng style clock driver support,pinctrl support
  • Rockchip
    • Clock driver – Fixes for RK3128, added RK3126 support within RK3128 driver
    • Pinctrl – Rockchip RK3128 subdriver
    • Power domains for Rockchip RK3366
    • New power key driver for Rockchip RK805 PMIC
    • PCI driver – Added Rockchip per-lane PHY support for better power management
    • SPI driver – Explicit support for Rockchip RV1108
    • DRM driver – Added dw_hdmi support for RK3399
    • Added ROCK64 board, RK3399 Sapphire module on Excavator carrier-board, and Theobroma Systems RK3399-Q7 SoM
    • Device tree changes:
      • pinctrl typos
      • keep-power-in-suspend in non-sdio nodes
      • removal of the deprecated num-slots property from dwmmc nodes.
      • RK3328 – support for spdif, io-domains and usb (including enablement of usb on the evaluation board)
      • RK3368 – support for spdif.
      • RK3399 – pcie changes, support for the mali gpu, a new power-domain, sdmmc support on the firefly board and dynamic-power-coefficients.
      • Removal of the deprectated num-slots property from all Rockchip dw-mmc nodes
      • RV1108 – support for sd-cards on the evaluation board
      • RK3288 – EVB gains support saradc and the adc-key, mali gpu enabled in some boards (fennec, evb, tinker).
      • RK3228/RK3229 – Support for efuse, sdmmc, sdio, io-domans and spdif; separate rk3229.dtsi;  The evaluation board also gets regulators, io-domains, emmc, tsadc keys
  • Amlogic
    • Clock driver – Added gxbb CEC32 and sd_emmc clocks, meson8b reset controller
    • SoC info driver – “Amlogic SoCs have a SoC information register for SoC type, package type and revision information. This patchs adds support for this register decoding and exposing with the SoC bus infrastructure”
    • Added Amlogic Meson AO CEC Controller driver
    • Device tree changes:
      • Updates for new MMC driver features/fixes, support for high-speed modes
      • Clock updates
      • Add GPIO line names to a few boards
      • Update clock controler for use as reset controller
  • Samsung
    • Clock driver – suspend fix for Samsung Exynos SoCs where we need to keep clks on across suspend
    • Samsung Exynos5420/5422/5800 audio fixes
    • S3C24xx platform – Cleanup from non-existent CONFIG entries, fix unmet NET dependency when H1940 bluetooth chip is selected
    • Pinctrl driver – Fix NULL pointer dereference on S3C24XX, fix invalid register offset used for external interrupts on Exynos5433, consolidate between drivers and bindings the defines for pin mux functions, minor code improvements
    • Samsung DTS ARM64 changes
      • Remove deprecated and unneeded properties from Exynos boards.
      • Implement proper (working) support for USB On-The-Go on Exynos5433 TM2/TM2E boards.
    • Samsung defconfig changes
      • Enable some drivers useful on our boards (communication: Bluetooth, WiFi, NFC, USB; codepages and crypto algorithms).
      • Enable debugging and lock testing options.
  • Qualcomm
    • IPQ8074 – Added SoC & HK01 board support, PCI driver
    • APQ8016 – Force USB host mode; jack detection support in ASoC
    • MSM8916 – Updated coresight nodes, added GPU, IOMMU, Venus video codec, and CEC clock nodes
    • MSM8996 – Add  support for USB, PCIE phy, RPM/GLink, and modem SMP2P; SMMU clks
    • Pinctrl driver – Qualcomm APQ8064 can handle general purpose clock muxing
    • NAND driver – Various fixes
    • Qualcomm GLINK SMEM driver – Fix memory leak, and unlock  on error
    • V4l – Update the Qualcomm Camera Subsystem driver document with a media controller pipeline graph diagram, VFE scale and crop modules support, and PIX interface and format conversion support.
    • Added DB820c PM8994 regulator node
    • Add PMI8994 gpios
    • Device tree changes:
      • Fixup XO, timer nodes, and pinctrl on IPQ4019
      • Add IPQ4019 RNG and wifi blocks
      • Update MSM8974 coresight node
      • Add IPQ8074 bindings
  • Mediatek
    • Pinctrl driver – Mediatek MT7623 PCIe mux data fixed up.
    • PCI Driver – Added MediaTek MT2712 and MT7622 support
    • Thermal driver – Added Mediatek thermal driver for mt2712
    • Added support for MediaTek MT2712 SoC and avaluation board
    • New board – Mediatek mt7623-based Banana Pi R2
  • Other new ARM hardware platforms and SoCs:
    • Broadcom – Stingray communication processor, Raspberry Pi Zero W
    • Marvell – ARMADA 8080 SoC
    • Microchip/Atmel – SAMA5D28 SoM1 EK
    • NXP – Toradex Apalis module + Apalis and Ixora carrier boards, Engicam GEAM6UL Starter Kit, Beckhoff CX9020 Embedded PC (i.MX53)
    • Renesas – R-Car D3 board (R8A77995)
    • Storlink/Cortina –
    • Texas Instruments – TI DT76x, TI AM335x Moxa UC-8100-ME-T open platform, TI AM57xx Beaglebone X15 Rev C
    • Uniphier – PXs3 STB SoC and development board
    • ZTE – ZX296718 PCBOX Board

MIPS had a huge changelog this time, summarized below:

  • CM – Rename mips_cm_base to mips_gcr_base; Specify register size when generating accessors; Use BIT/GENMASK for register fields, order & drop shifts; Add cluster & block args to mips_cm_lock_other()
  • CPC – Use common CPS accessor generation macros; Use BIT/GENMASK for register fields, order & drop shifts; Introduce register modify (set/clear/change) ; Use change_*, set_* & clear_* where appropriate, etc…
  • CPS – Read GIC_VL_IDENT directly, not via irqchip driver
  • DMA – Consolidate coherent and non-coherent dma_alloc code, Don’t use dma_cache_sync to implement fd_cacheflush
  • FPU emulation / FP assist code – Corner cases fixes such as NaN propagation and other special input values; Zero bits 32-63 of the result for a CLASS.D instruction; enhanced statics via debugfs; do not use bools for arithmetic. GCC 7.1 moans about this; correct user fault_addr type
  • Generic MIPS
    • Enhancement of stack backtraces
    • Cleanup from non-existing options
    • Handle non word sized instructions when examining frame
    • Fix detection and decoding of ADDIUSP instruction
    • Fix decoding of SWSP16 instruction
    • Refactor handling of stack pointer in get_frame_info
    • Remove unreachable code from force_fcr31_sig()
    • Many more fixes and cleanups
  • GIC – Introduce asm/mips-gic.h with accessor functions; Use new GIC accessor functions in mips-gic-timer; Remove counter access functions from irq-mips-gic.c; Remove gic_read_local_vp_id() from irq-mips-gic.c, etc…
  • microMIPS – Fix microMIPS stack unwinding on big endian systems
  • MIPS-GIC – SYNC after enabling GIC region
  • NUMA – Remove the unused parent_node() macro
  • R6 – Constify r2_decoder_tables; add accessor & bit definitions for GlobalNumber
  • SMP – Constify smp ops, allow boot_secondary SMP op to return errors
  • VDSO – Drop gic_get_usm_range() usage, avoid use of linux/irqchip/mips-gic.h
  • Platform changes
    • Alchemy – Add devboard machine type to cpuinfo, update cpu feature overrides,threaded carddetect irqs for devboards
    • AR7 – allow NULL clock for clk_get_rate
    • BCM63xx – Fix ENETDMA_6345_MAXBURST_REG offset, allow NULL clock for clk_get_rate
    • CI20 – Enable GPIO and RTC drivers in defconfig; add ethernet and fixed-regulator nodes to DTS
    • Generic platform
      • Move Boston and NI 169445 FIT image source to their own files
      • Include asm/bootinfo.h for plat_fdt_relocated()
      • Include asm/time.h for get_c0_*_int()
      • Include asm/bootinfo.h for plat_fdt_relocated()
      • Include asm/time.h for get_c0_*_int()
      • Allow filtering enabled boards by requirements
      • Don’t explicitly disable CONFIG_USB_SUPPORT
      • Bump default NR_CPUS to 16
    • JZ4700 – Probe the jz4740-rtc driver from devicetree
    • Lantiq – Drop check of boot select from the spi-falcon and lantiq-flash MTD drivers, access boot cause register in the watchdog driver through regmap, add device tree binding documentation for the watchdog driver, add docs for the RCU DT bindings, etc…
    • Loongson 2F – Allow NULL clock for clk_get_rate
    • Malta – Use new GIC accessor functions
    • NI 169445 – Add support for NI 169445 board; only include in 32r2el kernels
    • Octeon – Add support for watchdog of 78XX SOCs, add support for watchdog of CN68XX SOCs, expose support for mips32r1, mips32r2 and mips64r1, enable more drivers in config file, etc…
    • Omega2+ – New board, add support and defconfig
    • Pistachio – Enable Root FS on NFS in defconfig
    • Mediatek/Ralink – Add Mediatek MT7628A SoC, allow NULL clock for clk_get_rate, explicitly request exclusive reset control in the pci-mt7620 PCI driver.
    • SEAD3 – Only include in 32 bit kernels by default
    • VoCore board – Add VoCore as a vendor t0 dt-bindings, add defconfig file

For the complete details, you could check out the full Linux 4.14 changelog – with comments only – generated using git log v4.13..v4.14 --stat, or – kinder to your eyes – read kernelnewsbies’s Linux 4.14 changelog.

NanoPi Fire2A & Fire3 Boards Released with Samsung/Nexell Quad & Octa Core Processors

November 12th, 2017 34 comments

FriendlyElec previously launched NanoPi 2 Fire board powered by Samsung (Nexell) S5P4418 quad core Cortex A9 SoC, mostly interesting because of its small form factor, camera and LCD interfaces.

The company has now launched two new boards based on S5Pxx18 processors, namely NanoPi Fire2A powered by S5P4418 SoC, and NanoPi Fire3 based on S5P6818 octa-core Cortex-A53 SoC. Both boards share the same form factor, which remains quite similar to the one of NanoPi 2 Fire, except the HDMI connector now makes place for a micro HDMI port, the USB 2.0 has moved into vertical position, and a few other tweaks have been made to positions of buttons and components.

NanoPi Fire2A / Fire3 specifications:

  • SoC
    • Fire2A – Samsung S5P4418 quad core Cortex A9 processor @ up to 1.4GHz, Mali-400MP GPU
    • Fire3 – Samsung S5P6818 octa core Cortex A53 processor @ up to 1.4 GHz, Mali-400MP GPU
  • System Memory
    • Fire2A – 512MB DDR3
    • Fire3 – 1GB DDR3
  • Storage – 1x Micro SD Slot
  • Connectivity – Gigabit Ethernet port
  • Video Output / Display I/F- 1x micro HDMI 1.4a port up to 1080p60, RGB LCD interface
  • Camera – 24-pin DVP interface; 0.5mm pitch
  • USB – 1x USB Host port; 1x micro USB 2.0 OTG port for power and data
  • Expansions Headers – 40-pin Raspberry Pi compatible header with UART, I2C, SPI, GPIOs…
  • Debugging – 4-pin header for serial console
  • Misc – Power and reset buttons, power and system LEDs, RTC battery header
  • Power Supply – 5V/2A via micro USB port; STM32F03 ARM Cortex M0 MCU for power handling (SW power off, sleep , and wakeup function)
  • Dimension: 75 x 40 mm

Other differences with the earlier model: AXP288 PMIC is gone, and replaced by an STM32 Cortex M0 MCU, and the company has now added mounting holes for a heatsink. The company provides FriendlyCore, and Debian firmware images for both hardware, and an extra Android image for Fire3 board. FriendlyCore is based on Ubuntu Core 16.04 with Linux 4.4, Qt 5.9 with OpenGL, and GStreams with VPU acceleration. The good news is the Linux kernel got an upgrade from Linux 3.4 to a more recent Linux 4.4 LTS kernel.

You’ll find download links and instructions to get starting in the Wiki pages here and there. NanoPi Fire2A is sold for $28 plus shipping, while NanoPi Fire3 goes for $35. You may also be interested in compatible accessories and external modules, including S430 4.3″ capacitive touch screen LCD display, X710 7.1″ capacitive touch screen LCD display, HD101 10.1″ touchscreen LCD display, CAM500B 5MP CMOS camera, Matrix GPS module, and others which you can find by browsing in the store.

NanoPi Fire2A/3 Connected to LCD430 Display (Left) and GPS Matrix Module (Right)