• Posts

  • Joined

  • Last visited

Posts posted by mindee

  1. 21 minutes ago, tkaiser said:


    Really looking forward to this HAT :)


    BTW: I've not the slightest idea how much efforts and initial development costs are needed for such a HAT. But in case the Marvell based 4-port SATA solution will be somewhat expensive maybe designing another one with an ASMedia ASM1062 (PCIe x2 and 2 x SATA) and just one Molex for 2 drives might be an idea. Could be one design made for NEO4 that will work on M4 too with a larger (or dual-purpose) HAT PCB?


    21 minutes ago, tkaiser said:


    Really looking forward to this HAT :)


    BTW: I've not the slightest idea how much efforts and initial development costs are needed for such a HAT. But in case the Marvell based 4-port SATA solution will be somewhat expensive maybe designing another one with an ASMedia ASM1062 (PCIe x2 and 2 x SATA) and just one Molex for 2 drives might be an idea. Could be one design made for NEO4 that will work on M4 too with a larger (or dual-purpose) HAT PCB?


    I think the manufacturing cost is not so high, I am not sure for that now. The NEO4 use a differencet PCIe connector, it’s not a easy thing to fit both with one HAT, considering the signal quality.

  2. Spoiler


    On 9/13/2018 at 8:36 AM, tkaiser said:


    I'm now also testing IO performance on NanoPi M4 to get an idea how much influence the integrated VIA VL817 USB3 hub has. The following test command is used since I test with an el cheapo Samsung EVO 840 (known to exceed 500 MB/s on a SATA port but low capacity and implementing TurboWrite)

    taskset -c 4 iozone -e -I -a -s 100M -r 4k -r 16k -r 512k -r 1024k -r 16384k -i 0 -i 1 -i 2
    sleep 300
    taskset -c 4 iozone -e -I -a -s 2000M -r 16384k -i 0 -i 1 -i 2

    Why do I test first with 100 MB, then wait 5 minutes and test again with 2 GB?

    • Tests with 100 MB to keep results comparable with my previous collection
    • An additional test with 2 GB since we found that with fast USB3 implementations and fast SSDs the maximum throughput isn't reported when testing with low test sizes. 1GB or better 2GB seem like a reasonable additional test to look for real maximum bandwidth possible
    • Why waiting for 5 minutes (sleep 300) in between? Since my 128GB EVO840 implements TurboWrite and therefore is only capable to write data at maximum speed until the TurboWrite buffer is full. So if I would've tested all block sizes with 1GB test data size the EVO itself would've turned into a bottleneck after approx. 2.5GB data written
    • Why 'taskset -c 4' (executing the test on a big core)? Since we're looking for maximum performance here

    Raw results as follows

                                                                  random    random
                  kB  reclen    write  rewrite    read    reread    read     write
              102400       4    25559    28658    21964    22012    21957    28183
              102400      16    84846    94435    80322    80926    81083    92975
              102400     512   325556   326434   289616   292997   294076   322974
              102400    1024   347800   362005   324009   327371   329460   352963
              102400   16384   381091   386458   370522   373441   373337   378399
             2048000   16384   401465   402916   375361   375457   375509   398665

    In other words: Even with an USB3 hub in between storage performance is excellent as long as only one disk is connected (with more than one disk and accesses in parallel performance will of course drop since then bus contention issues might occur and bandwidth has to be shared). But with HDDs this is no issue at all since they're too slow anyway.


    Storage performance summary: I've had some fear that the internal USB3 hub will trash storage performance but that's not true (at least when only one disk is connected). As a reference numbers generated with same SSD, same settings and same test methodology on discontinued ODROID-N1 (as an example for RK3399 USB3 without hub and also with same SSD connected to a cheap PCIe SATA controller):

                          Random IO in IOPS     Sequential IO in MB/sec
                            4K read/write           1M read/write
    ODROID-N1                 5994/6308               330 / 340
    NanoPi M4                 5489/7045               330 / 355
    ASM1061 powersave         6010/7900               320 / 325 
    ASM1061 performance       9820/16230              330 / 330

    The ASM1061 numbers are especially dedicated to all those SBC users believing into 'native SATA'. Sequential storage performance with a good UAS capable USB3-to-SATA bridge is higher compared to cheap PCIe SATA controllers. 'Native' SATA does not exist with RK3399 anyway and for really high SATA storage performance more expensive SATA controllers making use of more than 1 PCIe lane are necessary. But with just an ASM1061 the only two real benefits of PCIe attached SATA over USB3 attached SATA are

    • higher random IO performance
    • less IRQs to process which results in less CPU utilization (see ODROID-N1 link above)

    But to attach one or two USB3 HDDs and share them at maximum speed (~100 MB/s through network) the NanoPi M4 is perfectly fine.


    Edit: Debug output here. We can see the usual 'ERROR Transfer event for disabled endpoint or incorrect stream ring' XHCI error when connecting an USB3 disk enclosure the first time (known problem but doesn't cause any harm) and amount of DRAM is reported differently since I swapped the SD card between my two NanoPi M4


    Thanks for your suggestion, we made a SATA HAT prototype for NanoPi M4, it can connect  with 4x 3.5inch hard drive and work well.



  3. I recommend NanoPi K1 Plus, it use the 64-bit SoC Allwinner H5, and has 2GB RAM, GigE, WiFi, and can run Android 7.1, Armbian(WIP), Ubuntu Core etc, price is  $39.


    It can play 4K video very smoothly under Android 7.1,  with IR remoter is better for Android TV

  4. On 9/2/2018 at 12:34 AM, hjc said:

    I've been doing some tests with NanoPi M4 these days. While I'm not a professional board reviewer, here I can share some early performance numbers to you. Beware that none of these tests fit into real world use cases, they are just provided as-is. Besides, Armbian development on RK3399 boards are still at a very early stage, so any of these numbers may change in the future, due to software changes.

    Unless mentioned, all tests are done using Armbian nightly image, FriendlyARM 4.4 kernel, CPU clocked at 2.0/1.5GHz



    NanoPi M4 is my first board powered by USB-C, while RK3399 is not power-hungry under normal load, I do doubt if 5V/3A power supply is sufficient when the CPU load goes higher, or when a lot of USB devices are connected. So I went a series of power measurement, with this tool


    That is to measure the power consumption on the USB side, excluding the consumption of PSU.

    The board is powered by the USB-C charger that came with my Huawei MateBook E, which supports 5V/2A, 9V/2A, and 12V/2A, so theoretically it is insufficient to power the NanoPi M4 board. Unfortunately I can't find a USB-C charger capable of 5V/3A output, and I have to do such test with it.

    What if I connected a lot of USB 3.0 device and exceeded the 5V/2A limit? Well, I did try that (connect 4 USB HDD and run cpuburn, or even connect 2 SBCs to the USB), and the answer is simple: the board crashed. But normally the board's consumption will not exceed 10W, so the charger works just fine.


    Test setup

    1) Idle consumption

    This is the typical consumption when you use it as an headless server.


    2) Idle consumption with HDMI display output (console tty interface, no Desktop/X11/GPU stuff)

    Testing with Dell P2415Q 4k 60Hz display. HDMI connected, with 2560*1440 60Hz video output. Also connect the USB 3.0 hub to


    3) Display connected, 802.11ac WiFi with iperf sending

    With HDMI display connected (same as (2)), and WiFi connected to 802.11ac 5GHz AP in another room, run the following command:

    iperf3 -c -t 60

    The WiFi throughput is around 110Mbps


    4) Display connected, running cpuburn

    With HDMI display connected (same as (2)), run cpuburn on all 6 cores


    5) Idle consumption of 4.19-rc1 mainline kernel

    Same as (1), but running mainline kernel.


    Test results



    The idle consumption is 1.79W, and it might need some tuning to reduce the consumption. When WiFi and display are connected, it goes higher to 2.87W.

    With an active WiFi networking, the board consumes 4.67W, and with all CPU cores active, it consumes 9.86W.

    Mainline kernel has a higher idle consumption, the reason might be DDR dvfs and/or devfreq are not implemented yet.

    Based on these results, it seems that 5V/2A power is okay if no peripheral devices are connected. However if you connect any USB devices, it may easily exceed the 2A limit when CPU load goes higher.


    CPU/RAM and IO Performance

    While RK3399 is not a super fast chip, its performance fits into its position. To reveal the full potential of the board, I'm posting some visualized sbc-bench results taken from mainline 4.19-rc1 kernel here. This is because there might be some DRAM performance issues on RK3399 with 4.4 kernel.. For comparison, I'm also posting the results of Firefly-RK3399 (2.2/1.8GHz overclock, tested by myself), Raspberry Pi 3 B+, ROCK64 and RockPro64 (taken from existing sbc-bench results)


    You can see the full sbc-bench log here.











    For IO performance, I use iozone to measure the performance of SD card, eMMC and USB SSD. NanoPC T4's NVMe SSD results are added as a reference.

    SSD performance are measured by command "iozone -e -I -a -s 1G -r 4k -r 16k -r 512k -r 1024k -r 16384k -i 0 -i 1 -i 2", SD card and eMMC are using 100M instead of 1G size.




    NanoPi M4 comes with a 1Gbps ethernet port and a 802.11ac 2x2 MIMO WiFi module, and I tested both with iperf3.

    GbE iperf3 full duplex test:

    hjc@nanopim4:~$ iperf3 -c & iperf3 -Rc -p 5202
    [1] 27486
    Connecting to host, port 5201
    Connecting to host, port 5202
    Reverse mode, remote host is sending
    [  4] local port 43782 connected to port 5201
    [  4] local port 45102 connected to port 5202
    [ ID] Interval           Transfer     Bandwidth
    [  4]   0.00-1.00   sec  64.6 MBytes   542 Mbits/sec                  
    [ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
    [  4]   0.00-1.00   sec  95.1 MBytes   798 Mbits/sec    0    314 KBytes       
    [  4]   1.00-2.00   sec   110 MBytes   919 Mbits/sec                  
    [  4]   1.00-2.00   sec  94.5 MBytes   793 Mbits/sec    0    320 KBytes       
    [  4]   2.00-3.00   sec   110 MBytes   920 Mbits/sec                  
    [  4]   2.00-3.00   sec  95.8 MBytes   803 Mbits/sec    0    317 KBytes       
    [  4]   3.00-4.00   sec   110 MBytes   920 Mbits/sec                  
    [  4]   3.00-4.00   sec  94.5 MBytes   792 Mbits/sec    0    317 KBytes       
    [  4]   4.00-5.00   sec   110 MBytes   920 Mbits/sec                  
    [  4]   4.00-5.00   sec  94.6 MBytes   794 Mbits/sec    0    314 KBytes       
    [  4]   5.00-6.00   sec   110 MBytes   919 Mbits/sec                  
    [  4]   5.00-6.00   sec  95.7 MBytes   803 Mbits/sec    0    314 KBytes       
    [  4]   6.00-7.00   sec   110 MBytes   919 Mbits/sec                  
    [  4]   6.00-7.00   sec  95.5 MBytes   801 Mbits/sec    0    317 KBytes       
    [  4]   7.00-8.00   sec   110 MBytes   920 Mbits/sec                  
    [  4]   7.00-8.00   sec  94.8 MBytes   795 Mbits/sec    0    314 KBytes       
    [  4]   8.00-9.00   sec   110 MBytes   920 Mbits/sec                  
    [  4]   8.00-9.00   sec  94.5 MBytes   792 Mbits/sec    0    314 KBytes       
    [  4]   9.00-10.00  sec  97.2 MBytes   816 Mbits/sec    0    320 KBytes       
    - - - - - - - - - - - - - - - - - - - - - - - - -
    [ ID] Interval           Transfer     Bandwidth       Retr
    [  4]   0.00-10.00  sec   952 MBytes   799 Mbits/sec    0             sender
    [  4]   0.00-10.00  sec   949 MBytes   796 Mbits/sec                  receiver
    [  4]   9.00-10.00  sec   110 MBytes   921 Mbits/sec                  
    - - - - - - - - - - - - - - - - - - - - - - - - -
    [ ID] Interval           Transfer     Bandwidth       Retr
    iperf Done.
    [  4]   0.00-10.00  sec  1.03 GBytes   884 Mbits/sec    9             sender
    [  4]   0.00-10.00  sec  1.03 GBytes   882 Mbits/sec                  receiver
    iperf Done.
    [1]  + 27486 done       iperf3 -c



    hjc@nanopim4:~$ iperf3 -c
    Connecting to host, port 5201
    [  4] local port 39730 connected to port 5201
    [ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
    [  4]   0.00-1.00   sec  13.0 MBytes   109 Mbits/sec   13   1.21 MBytes       
    [  4]   1.00-2.01   sec  12.9 MBytes   107 Mbits/sec    5    618 KBytes       
    [  4]   2.01-3.00   sec  12.6 MBytes   106 Mbits/sec    0    618 KBytes       
    [  4]   3.00-4.00   sec  9.35 MBytes  78.7 Mbits/sec    4    329 KBytes       
    [  4]   4.00-5.00   sec  11.1 MBytes  92.9 Mbits/sec    0    348 KBytes       
    [  4]   5.00-6.00   sec  10.2 MBytes  85.5 Mbits/sec    0    363 KBytes       
    [  4]   6.00-7.00   sec  9.37 MBytes  78.6 Mbits/sec    0    387 KBytes       
    [  4]   7.00-8.00   sec  10.9 MBytes  91.5 Mbits/sec    0    409 KBytes       
    [  4]   8.00-9.00   sec  13.6 MBytes   114 Mbits/sec    0    409 KBytes       
    [  4]   9.00-10.00  sec  13.8 MBytes   116 Mbits/sec    0    410 KBytes       
    - - - - - - - - - - - - - - - - - - - - - - - - -
    [ ID] Interval           Transfer     Bandwidth       Retr
    [  4]   0.00-10.00  sec   117 MBytes  98.0 Mbits/sec   22             sender
    [  4]   0.00-10.00  sec   116 MBytes  97.0 Mbits/sec                  receiver
    iperf Done.
    hjc@nanopim4:~$ iperf3 -c -R
    Connecting to host, port 5201
    Reverse mode, remote host is sending
    [  4] local port 39734 connected to port 5201
    [ ID] Interval           Transfer     Bandwidth
    [  4]   0.00-1.00   sec  10.6 MBytes  88.8 Mbits/sec                  
    [  4]   1.00-2.00   sec  10.9 MBytes  91.5 Mbits/sec                  
    [  4]   2.00-3.00   sec  4.41 MBytes  37.0 Mbits/sec                  
    [  4]   3.00-4.00   sec  2.07 MBytes  17.3 Mbits/sec                  
    [  4]   4.00-5.00   sec  1018 KBytes  8.34 Mbits/sec                  
    [  4]   5.00-6.00   sec  1.29 MBytes  10.8 Mbits/sec                  
    [  4]   6.00-7.00   sec  6.48 MBytes  54.4 Mbits/sec                  
    [  4]   7.00-8.00   sec  10.8 MBytes  91.0 Mbits/sec                  
    [  4]   8.00-9.00   sec  10.7 MBytes  89.9 Mbits/sec                  
    [  4]   9.00-10.00  sec  10.7 MBytes  89.8 Mbits/sec                  
    - - - - - - - - - - - - - - - - - - - - - - - - -
    [ ID] Interval           Transfer     Bandwidth       Retr
    [  4]   0.00-10.00  sec  70.1 MBytes  58.8 Mbits/sec    0             sender
    [  4]   0.00-10.00  sec  69.1 MBytes  58.0 Mbits/sec                  receiver
    iperf Done.

    It's too complicated to analyze the performance of a WiFi connection, but so far I've never seen more than 200Mbps throughput on AP6356S.

    Thanks for your testing, this would be very helpful for many end-use.r Want to know the USB 3.0 speed. 

  5. 9 hours ago, renky said:

    In general I want to know, how many arm mainboards is it required to order and the manufacturer

    starts negotiating about specifications you want to get modified?


    I do not say at the same price. If I tell the manufacturer of the orange pi one, I want the arm mainboard

    but it must have 4gb ram and usb mini b connectors at what volume number does the

    manufacturer start listening? 50000 mainboards?

    Thank you. 

     We(FriendlyElec) can do it. The MOQ is 1000pcs using RK3399, but the engineer fee is $6000, or 1BTC(price is valid within 1 month) , Sample time is 6-7 weeks, you will get 3 samples.

    if your order is more than 6000pcs in 12 months. The engineer fee can be returned in the last order.


  6. 13 hours ago, Igor_K said:

    @mindee could you please share the spec differences with M4. I'm torn :) 

    Just a little bit list, more detail would be done on wiki soon.

    1. NEO4 board size is 45 x 56mm, but M4 is 85 x 56mm

    2. NEO4 has 1GB DDR3 RAM with single chanel, But M4 has two version 2GB DDR3 RAM/4G LPDDR3 RAM with Dual Chanel.

    3. NEO4  will use AP6212 wireless module with single antenna , but M4 use AP6356S dual-band module, and use 2x2 MIMO and 2 real antennas. 

    4. NEO4 has one MIPI-CSI, M4 has two MIPI-CSI

    5. NEO4 has USB3.0  x1 & USB 2.0  x1, but M4 has USB 3.0 x4 behind a VL817 internal hub.

    6. NEO4 use 1.27mm pitch SMD connector for GPIO-40 pinout,  M4 is same with RPi3 40pin GPIO.


    Both have:

    1. PCIe x2 pin-out

    2. eMMC module connector

    3. GigE port.

    4. TypeC is for power supply and OTG.

    5. HDMI-A & MicroSD slot.

    6. Big CNC heat sink, with two side 1/4 screw hole

  7. On 8/21/2018 at 10:23 PM, tkaiser said:

    Ok, so it's confirmed:


    Powering also possible through pins 2 and 4 so since the SoC is at the right side and heat dissipation is no problem @mindee could evaluate a 'SATA HAT' using the 2 PCIe lanes, a Marvell 88SE9235 SATA controller (x2 PCIe to host, 4 x SATA 3.0 to disks) and power circuitry with 12V input able to feed board and 4 x 3.5" disks.


    If I understood correctly RK3399's VPU capabilities make it interesting as transcoding NAS (once video support is ready in Linux, though no idea how far things are. @JMCC do you know about the state of video transcoding with RK3399?)


    Thanks for your suggestion, we’ll check that.

  8. Not the final version.



    Update(8/24/2018): It's time to deal with NEO4, this picture is not the final version. NEO4 will have PCIe x2 and eMMC connector too, and a MIPI-CSI. But the dual-layer USB connector  will share USB 3.0 & USB 2.0, Type-C take another USB 3.0.


  9. 22 minutes ago, lucho said:

    We're going off-topic here, but could you give some more details? Which SoC will the NanoPi-M4 use? Because there already is an RK3399-based board with the same size as Raspberry Pi 3 – the Rock960.

    NanoPi-M4 is RK3399 based too, just no eMMC on board, and no so many interface as NanoPC-T4 So a little lower cost.




  10. 2 hours ago, lucho said:

    I think that the hardware development is already complete, unlike the software development, which has only recently started and is progressing quickly (a new pre-release almost every day).


    As to the hardware revisions, the difference between V1.0 and V2.0 is quite large. The difference between V2.0 and the July 2018 batch is only 1 omitted resistor (R895381), which was probably not needed in the first place. So the bare PCB can be the same as for V2.0. In general, the number of hardware revisions of a product is much lower than the number of software revisions. This is natural.


    But what's interesting to me is how the price of RockPro64, Orange Pi RK3399, and other RK3399-based boards like the NanoPC T4 can be so low. As many of you probably don't know, the Chinese government subsidises Shenzhen Xunlong Software Company (the maker of the Orange Pi boards), and so they can afford to sell their boards at the BOM (Bill of Materials) cost, not following the "golden rule" that the retail price of a product must be 3 times higher than the BOM cost to pay salaries, depreciation allowances, etc. But their RK3399 board has only 2 GB of DRAM and 16 GB of eMMC flash memory and sells for $109. The 2 GB RockPro64 variant plus 16 GB eMMC sells for even less: just $75. How is this possible? Does the Chinese government subsidise Pine Microsystems as well? Unlikely! Then, what is the secret behind their astonishingly low prices?


    NanoPi-M4 will be cheaper and same form factor as RPI 3. :)

  11. 4 hours ago, arox said:


    Cute ! But I like boards with ap6212 : I want to connect my IoTs in a mesh network (*) with ppp over bluetooth. And optionaly open a fast channel over wifi.


    (*) Has someone some experience in building a mesh network with ad-hoc wifi and olsrd ?


    NanoPi Air is very light at 7.9g, and with AP6212, and using the faster eMMC chip already. 


    And FriendlyARM provided stable FriendlyCore system, which is  based Linux kernel-4.11 & Ubuntu Core 16.04, includes RPi.GPIO library, Wiring library etc.