Posts Tagged ‘Linux’

IceZero Lattice iCE40 FPGA Board is Designed for Raspberry Pi Zero

June 24th, 2017 No comments

Yesterday, we reported about Olimex’s open source hardware iCE40HX8K-EVB board with a Lattice iCE40 (HX8K) FPGA, and today, another iCE40 FPGA board, also open source hardware, appeared in my news feed with Trenz Electronic’s IceZero board specifically designed to be programmed using a Raspberry Pi Zero board.

Click to Enlarge

IceZero board specifications:

  • FPGA – Lattice ICE40HX4K with 3520 logic gates, and 80 Kbit memory
  • Storage – SPI Flash for FPGA self-configuration
  • Misc – 3x User LEDs;  User Clock: 100 MHz
  • Expansion – 4x unpopulated PMOD Connectors; 40-pin Raspberry Pi female header
  • Dimensions – 56 x 30.5mm (Raspberry Pi HAT Compatible)

The board is supported by icoTC open source FPGA toolchain for Windows and Linux, which you can use in Raspberry Pi Zero (W), and other RPi board with a 40-pin header running Raspbian, as explained in that simple example in Github. Trenz electronic only shared part of the documentation, but you’ll find everything on a blog post on Black Mesa Labs with the design files licensed with the CERN Open Hardware License v1.2, and more technical details about the board.

Block Diagram with Raspberry Pi

Trenz Electronic sells IceZero board for 34 Euros excluding VAT and shipping, but in case you’d like to make it yourself, you can also order the bare PCB on OSH Park.

OnePlus 5 Smartphone Linux Kernel & Android Source Code Released

June 22nd, 2017 1 comment

OnePlus 5 is a premium smartphone powered by a Qualcomm Snapdragon 835, 6 to 8 GB LPDDR4x RAM, 64 to 128 GB UFS 2.0 storage and a 5.5″ Full HD display, as well as the usual LTE, WiFi, Bluetooth, GPS.. connectivity. It was launched yesterday for $479 with 6GB RAM/64GB storage, $539 with 8GB RAM/128GB storage, and today, I’ve just read on XDA developers that the company had already released the source code for the phone. Beside the official Google Nexus/Pixel smartphones, many manufacturers will drag their feet before they eventually open the source code that they are legally required to release.

Click to Enlarge

Some companies will release the source code as tarballs, which works, but OnePlus has done better with Linux 4.4.21 source code available on Github.

You should also be able to get the Android 7.1 Nougat source code as indicated here:

The source code should lead to improvements by the community, as well as the eventual release of unofficial “ROM’s”. The company already released the Linux kernel and Android for their OnePlus 3 model on the day of the launch last year, so they are making an habit of it…

Inforce 6309 Snapdragon 410E micro SBC is Now Selling for $89 (Promo)

June 22nd, 2017 No comments

With its Snapdragon 410E processor,  Inforce 6309 single board computer is similar to Qualcomm DragonBoard 410c board, except it adds a Gigabit Ethernet port with optional PoE/RS484 add-on, switches HDMI with micro HDMI, replaces Low and High speed connectors with LVDS, dual MIPI-DSI, and 26-pin IO onnector, as well as offering an extended temperature range. It’s also designed for production, rather than just development, but it normally costs $126 instead of $75 for Qualcomm’s 96Boards compliant board. Inforce is now bringing that price down with a summer promotion allowing you to buy the board for $89 using summer coupon, excluding potential taxes, and shipping.

Click to Enlarge

I’ll reproduce the specifications below for reference:

  • SoC- Qualcomm Snapdragon 410/410E (APQ8016/APQ8016E) quad-core ARM CortexA53 @ 1.2 GHz with Adreno 306 GPU and Hexagon QDSP6 @ 700 MHz
  • System Memory – 1GB LPDDR3 @ 533MHz, single-channel 32-bit (4.2GBps)
  • Storage – 8GB eMMC flash (eMCP package with RAM) + micro SD slot
  • Video Output / Display IF – micro HDMI up to 1080p30; LVDS and touch screen up to 1920×1200 (24-bit) or 2048×1536
  • Audio – HDMI, combo jack for headphone and microphone, PMM8916 audio codec
  • Connectivity – Gigabit Ethernet (USB 2.0 to GbE bridge), 802.11 b/g/n WiFi, Bluetooth 4.1 LE, and GPS/GLONASS
  • USB – 2x USB 2.0 host ports, 1x micro USB OTG port
  • Camera – Dual MIPI-CSI2 (4/2 lanes) for dual camera support up to 13MP
  • Serial – Optional RS-485 port via interface card
  • Expansion – 26-pin header with I2C, SPI, I2S, UART and GPIOs
  • Power Supply – 12V/1.5A DC input; optional PoE
  • Dimensions – 85×54 mm
  • Temperature Range – Operating & Storage: -30ºC to +85ºC

The board can be purchased pre-loaded with either Android or Linux. The $37 discount also applies to the starter kit which adds an acrylic base, a power adapter and a micro USB cable. The offer is valid for one board only, runs between June 21st and July 12th, or while supply lasts.

NanoPi NEO NAS Kit Review – Assembly, OpenMediaVault Installation & Setup, and Benchmarks

June 18th, 2017 55 comments

NAS Dock v1.2 for Nano Pi NEO / NEO 2 is, as the name implies, a complete mini NAS kit for 2.5″ drive for NanoPi NEO or NEO 2 board. The NEO 2 board is strongly recommended, since it’s not much more expensive, but should deliver much better results due to its Gigabit Ethernet interface. I’ve received two of those kits together with several other boards & accessories from FriendlyELEC, and today I’ll show how to assemble the kit, configure OpenMediaVault, and run some benchmarks.

NAS Kit V1.2 Assembly with NanoPi NEO 2 Board

The only extra tool you’ll need is a screwdriver, and potentially a soldering iron as we’ll see further below.
The metal box is stuff wih accessories so the first thing is to open one or two sides to take out the content. We have the mainboard, NanoPi NEO back plate, NanoPi NEO 2 back plater, a heatsink and thermal set, and a set of 5 screws to tighten the hard drive which mean there’s one extra screw. FriendlyELEC always adds extra screws, and I find it’s a nice touch, as it can be a real pain if you happen to lose one.

Click to Enlarge

Let’s have a closer look at the “1-bay NAS Dock v1.2 for NanoPi NEO/NEO2” board. We have a UAS capable USB 3.0 to SATA brige chip between the two header for NanoPi NEO board (note that the USB connection will be limited to USB 2.0 since the board only supports that), an LED, a USB 2.0 host port for a printer, WiFi dongle, or webcam, the power switch, the power jack, a 3-pin serial header, an I2C connector for Grove modules, and of course the SATA connector.

Click to Enlarge

There’s not much on the other side of the board, except a CR2032 battery slot for the RTC.

Before going further, you’ll need to go to the Wiki, and get the latest OpenMediaVault firmware, in my case, which I then flashed with Ether program to a micro SD card..

Once this is done, install the heatsink and thermal to your NanoPi NEO 2 board, and insert the micro SD card into the board.

Notice that I also soldered the headers. While it would be obvious to people would have looked at the pinout diagram, I’ve read some people have justed connect the board using the (pre-soldered) 4-pin header, as they may have believed it was a USB header, but it’s just the serial console instead, and obviously the hard drive was not detected. If you don’t feel like soldering the headers to the board yourself, make sure you tick the option “with pin headers soldered” when ordering. It just costs $1 extra.

Now we can insert our board into the “1-bay NAS Dock” board, instead the hard drive, and optionally an I2C module. I connected an I2C OLED display i the picture below for illustrate, as using the display would require cutting out the case. Some people may want to connect an I2C temperature sensor instead.

Click to Enlarge

I used four screws to tighen the hard drive on the other side of the board, and install a CR2032 battery for the real-time clock.

Finally, you’ll need a 12V power supply with at least 1A, but I could not find any (safe) spare ones so I used Maxoak K2 power bank instead, since it can output 12V @ 2.5 A max.

OpenMediaVault Setup on NanoPi NEO 2 Board

So I connected everything, and applied power, but the board would not boot with the Ethernet Link LED blinking in a regular fashion, meaning something was very wrong. So I took out the board, and connected a serial debug board, connect to the console via minicom using 115200 8N1, and that’s what I got:

The boot was just stuck there. I re-inserted the micro SD in my PC, and I could see both boot and rootfs partitions, so everything looked good.
Then I powered the NanoPi NEO 2 board with a 5V/2A power supply only, and the boot succeeded:

Then I went back to the 12V power input on NAS Kit with the power bank and the boot succeeded. Very strange. It turns out the board would not boot most of the time, but the symptoms are not reproducible 100% of the time. This kind of random behavior is usually a timing or distorted signal issue. So I thought the micro SD card might not play well with the board, and the power bank signal might not be so clean. So I first flashed another micro SD card, but same results. I used another 12V/5A power supply, and it did not really help either. Finally, I used another NanoPi NEO 2 board and it appears to be stable.

You can find the board using FriendlyELEC.local if bonjour services are running in your computer:

Alternatively, you could check out the IP address in other ways. In my case, I just type friendlyelec.local in Firefox to access the web interface. The default username and password are admin and openmediavault.

Click to Enlarge

After login, you can access the dashboard showing system information, and which services are running. You may want to disable the services you don’t need.

Click to Enlarge

You can go to Storage->Physical Disks to check if your hard drive has been detected. No problem for me here with a 931.51 GiB drive detected.

Click to Enlarge

You may then want to setup a fix IP address. There are various ways to do this but I went to Network->Interfaces and set eth0 to a fixed IP address. You’ll be asked to apply the changes once it’s done.

Click to Enlarge

I also changed the hostname to CNX-NEO2-NAS in the General tab.

After that I decided to address some security issues. First by changing the administrator password in General Settings->Web Administrator Password.

I then went to Access Rights Management->User to find out there were two pre-configured users: pi and fa. I deleted fa user, changed pi’s user password, and added it to ssh group. It’s actually even probably better to just delete both user, and create your own.

The root user is not shown, but you’ll want to login as root through ssh first and change the password, as the default password is fa. Once it’s done, you’ll have better security, and your system should not be easily accessible via basic “hacks”. For more security, you’ll still want to install an RSA certificate. A self-signed one should do if you plan to use it only in the local network, but you may also consider a free Let’s Encrypt certificate instead.

We can now take care of the hard drive. I went to Storage->File Systems, and clicked on +Create file system which will let you choose between BTRFS, EXT3, EXT4, XFS, and JFS. I’ve gone with EXT4 first.

Click to Enlarge

After a few minutes you drive should be formatted, so we can configure network shares. I want to use SAMBA and SFTP to transfer files for the purpose of this review, so I went to Access Rights Management->Shared Folders to add a new share called HDD for the root of of hard drive. You may want to add multiple share if you plan to split videos, documents, music and so on.

Click to Enlarge

I clicked Save, and selected ACL to add permissions to pi and admin users. You can add whatever users you plan to use to access the share.

Click to Enlarge

That share3d folder can now be assigned to the services you plan to use. SFTP is enabled by default when SSH is running, so I create a SAMA/CIFS share by going to Services->SMB/CIFS->Shares to add the share.

Click to Enlarge

Browsing the Network with Nautilus would show both cnx-neo2-NAS – SMB.CIFS and cnx-neo2-nas – SSH (SFTP) shares.

Configuration is now complete. I have not find a clean way to power off the system, so I normally open a terminal session via ssh and run the shutdown now command. A software button to turn of the NAS would have been a nice features on the kit.

I also often encountered the error “Software Failure. Press left mouse button to continue. Session not authenticated.” before the session timeout is set to 5 minutes. If you prefer a longer timeout, you can change it in General Settings->Web Administration.

In case you want to use the RTC, you may first want to set the timezone:

Check the date is correct, and write it to the hardware clock:

before reading it back.

You can test it by rebooting the board without the Ethernet cable:

Perfect! You’d just have to make sure the “set” command is run automatically at boot time if the time in the RTC is set. It would be good if FriendlyELEC updated their image to do that automatically at boot time.

NAS Dock V1.2 + NanoPi NEO 2 Benchmarks

Since I can now copy files and folders over SAMBA and SFTP, we can start running some benchmarks to evaluate performance. I’ll use EXT-4, BTRFS, and XFS file systems on the hard drive, and run iozone to specicially test storage performance, following by copying large and small files over SAMBA or SFTP to test real-life NAS performance. For large file copy, I’ll use a folder with 7 large files totaling 6.5 GB, and for small files, I’ve done a fresh checkout of the Linux kernel in my computer:

and removed symlinks since they may cause issues during copy, as well as .git directory with a huge 1.8GB file:

The end result is a directory with 64,013 files totaling 748.6 MB.

Iozone results




I’ve taken results with 16384kB reclen for read, write, random read and random write values to draw a chart, since most people are likely going to store large files in their NAS. The smaller reclen could be interesting if you plan to handle smaller files.

All three file systems have a very good read speed of around 40 MB/s, but BTRFS write appear to be the fastest among the three, with EXT-4 being the weakest at around 25 MB/s. But for some reasons, those results are useless in practice, as we’ll see below. Finding out the exact reason would possibly require studying and profiling iozone and the kernel source code which would be outside of the scope of this review.

File copy over SAMBA and SFTP

Results for large files in minutes and seconds.

File Copy  Large Files SMB SFTP
Write Read Write Read
EXT4 02:49.00 02:40.00 03:54.00 04:15.00
BTRFS 03:20.00 02:40.00 03:48.00 04:32.00
XFS 02:45.00 02:38.00 03:36.00 04:23.00

Chart converted to MB/s.

Read and Write Speeds in MB/s

First, we can see very good read performance from the NAS (NAS to my PC)  with 41 to 42 MB/s close to the theorethical limit of a USB 2.0 connection. Write speed is a a little different as the files were transferred more slowly with BTRS, and around 40MB/s with EXT-4 and XFS.  Since SFTP is encrypted the transfer speed is roughly the same for all three file systems. Overall the file system you choose does not really impact performance with large files.

Results for small files in minutes and seconds.

File Copy  Small Files SMB SFTP
Write Read Write Read
EXT4 15:26.00 18:34.00 09:02.00 12:48.00
BTRFS 18:48.00 18:02.00 10:30.00 11:30.00
XFS 17:33.00 18:22.00 09:18.00 12:35.00

Chart converted to MB/s.

Transferring a large number of small files over SAMBA is really slow, and barely faster over SFTP. Again,there aren’t any significant differences between file systems here.  If you are going to transfer a large number of small file over the network, you may want to either compress the files before transfer, or compress the files on the fly using the command line:

It took just 1 minute and 49 seconds to transfer all 64,013 files, or over five times faster than SFTP write to XFS, at around an effective 6.86 MB/s. So knowing your tools may matter as much as having the right hardware.

I was going to run a last part after enabling optimizations provided by tkaiser, but it turns out FriendELEC has already done that in their firmware image.

If you want to reproduce the setup above, you’ll need to purchase NAS Kit v1.2 for $12.99, and a NanoPi NEO 2 with soldered headers for $15.99. If you don’t have a 2.5″ hard drive, you’ll need to add this, as well as a 12V power supply which you could purchase locally, or on FriendlyELEC website for under $10. All in all that’s cheaper than a similar kit with a Raspberry Pi 3 board, and you’ll get close to four times the SAMBA performance for large files since RPi 3 will be limited to 10 to 12 MB/s due to the Fast Ethernet connection.

Design Amazon Alexa Gateways, Robots and Smart Speakers with WisCore Modular Development Kit

June 17th, 2017 3 comments

RAK Wireless has launched a new development board powered by Mediatek MT7628A processor running OpenWrt with built-in WiFi and Ethernet connectivity, and audio codec and microphone to support Amazon Alexa voice service. Bluetooth, Zigbee, and Z-wave will also be supported via UART modules.

Wiscore Specifications:

  • Processor – Mediatek MT7628A MIPS24KEc CPU @ up to  580MHz
  • System Memory –  128MB DDR2 (64 MB optional)
  • Storage – 16 MB flash + micro SD card

    Block Diagram – Click to Enlarge

  • Audio
    • MicroSemi ZL38062 for audio in and out
    • MicroSemi ZL38067 to handle “Alexa” keyword
    • single or dual digital microphone up to 5 meter range
    • Far field voice wake up
    • Support for echo cancellation
  • Connectivity
    • 802.11 b/g/n WiFi 2×2 MIMO up to 300 Mbps
    • 2x 10/100M Ethernet (LAN and WAN)
    • Optional UART modules for Bluetooth, ZigBeem Z-Wave
  • USB – 1x USB 2.0 host port
  • Expansion – Arduino headers with UART, I2C, SPI and GPIOs
  • Power Supply – 5V via power barrel or mini USB port

As you can see from the photo below, the main components are on separate boards (for some reasons) with a “mother board”, MT7628 module, and an audio sub-board.

As mentioned in the introduction, the MT7628 module runs an OS based on OpenWrt with RAK iGate middleware, and the company provides an SDK allowing you to develop solutions based on Amazon Alexa thanks to one codec that will detect “Alexa” keyword and wake up to the board, and another codec handling audio capture and output. The software architecture is shown below, Wiscore app for Android and iOS is provided to pair the EVK with Alexa, and more documentation and software can be found in the Wiki on Github.

WisCore Software Architecture

The solution can be used to build voice controlled home automation gateways or appliances, smart speakers, and robots. RAK Wireless sells a development kit with the three boards, an Ethernet cable, a speaker, a USB cable, two antennas, some Dupont wires, some jumpers, and a Quick Start Guide for $49 plus shipping. Visit the product page for a few more details.

Axiomtek tBOX100-838-FL Fanless Transportation Computer Features BNC Video & Audio Inputs for DVR Function

June 16th, 2017 No comments

Axiomtel tBOX100-838-FL is a fanless Bay Trail rugged embedded computer powered by an Intel Bay Trail-I E3845 processor with 5 BNC input ports for video and audio, and targeting vehicle, railway and marine markets.

Axiomtek tBOX100-838-FL rugged mini PC’s specifications:

  • SoC –  Intel Atom E3845 quad core Bay Trail-I processor @ up to 1.91 GHz with Intel HD graphics
  • System Memory – 4 GB DDR3L-1333
  • Storage – 1x 2.5” SATA slot up to 9.5mm, 1x mSATA connector, flash for AMI BIOS
  • Video Output – 1x VGA port
  • Video / Audio Input – 4x video in BNC connector, 1x audio in BNC connector
  • Connectivity – 2x M12 A-coded GbE LAN or 2x RJ-45 GbE LAN (via Intel i210)
  • Serial – 1x RS-232/422/485 (DB9)
  • USB – 2x USB 2.0 port
  • Expansion – 1x Full-size PCIe Mini Card with mSATA; 1x SIM card slot
  • Misc – 1x remote switch; 1x reset button; watchdog timer; 6x status LEDs
  • Power Supply – 9 to 36 VDC via 1x M12 DC power input or 1x Phoenix DC power input; typical: 12/24VDC
  • Enclosure
    • Dimensions – 163.8 x 108 x 44 mm
    • Aluminum extrusion and heavy-duty steel
    • 4x antenna opening
  • Weight – 770 grams
  • Temperature Range
    • -40°C ~ +70°C with SSD
    • -25°C ~ +55°C with HDD
  • Relative Humidity – 5% ~ 95%, non-condensing
  • Vibration
    • 3 Grms w/ SSD (5-500Hz, X, Y, Z direction; random)
    • 1 Grms w/ HDD (5-500Hz, X, Y, Z direction; random)
  • Shock – Complies with EN 61373 section 10 table 3 category 1 class A and class B up to 5 Grms (30ms, ±X/Y/Z direction)
  • Certifications – CE (Class A), E-Mark, ISO 7637 certified; EN 50155, EN 50121, and DNV 2.4, IEC 60945 compliance

The mini PC supports Windows 10, WE8S, WES 7, Linux, and VxWorks7 operating systems, and can be mounted to a wall or a DIN rail.

The picture above shows Ethernet and power connector option with waterproof M12 connectors (option 1) better suited for marine application, or in any situation where you’d need some waterproofness. The company also mentions a mini PCIe DVR capture card without much details likely to be used with the BNC connectors.

The computer is expected to become available in mid August 2017. More details may be found in the product page.

Marvell 88W8987xA Wireless SoC Supports 802.11ac & 802.11p WiFi, Bluetooth 5 for V2X & IVI Automotive Applications

June 15th, 2017 No comments

Marvell has introduced the new 88W8987xA wireless chip with 802.11ac, 802.11p and Bluetooth 5 Connectivity for V2X (Vehicle-to-Everything) and IVI (In-Vehicle Infotainment) automotive applications such as Dedicated Short Range Communications (DSRC) systems, and secure wireless Gateway systems.

Key features of Marvell 88W8987xA family:

  • Connectivity
    • WiFI – IEEE 802.11ac (wave2) up to 433 Mbps / IEEE 802.11p WAVE (Wireless Access in Vehicular Environments) / 1609.x
    • Bluetooth 5 including Bluetooth Low Energy Angle of Arrival and Departure (AoA/AoD)
    • 2x antenna configuration for Wi-Fi/Bluetooth coexistence
  • Host Interfaces – SDIO 3.0 interface (4-bit SDIO and 1-bit SDIO) @ up to 208 MHz;  high-Speed UART interface (for Bluetooth only)
  • Audio Interfaces – Digital audio interfaces (PCM)
  • Temperature Range – -40°C to +105°C (AEC-Q100 Grade 2 Qualification)
  • Package – pin 8×8 mm QFN with wettable flanks

Click to Enlarge

The family now includes three pin-to-pin compatible SoCs:

  • 88W8987A with 802.11ac + Qualified Bluetooth 5 Functionality
  • 88W8987PA with 802.11p + Qualified Bluetooth 5 Functionality
  • 88W8987SA with switchable 802.11ac/802.11p + Qualified Bluetooth 5 Functionality

The first time I read the SoC supported 802.11p, I though it might be a typo, but it’s just another WiFi standard specifically designed for automotive applications operating in the 5.9GHz range as explained on Wikipedia:

IEEE 802.11p is an approved amendment to the IEEE 802.11 standard to add wireless access in vehicular environments (WAVE), a vehicular communication system. It defines enhancements to 802.11 (the basis of products marketed as Wi-Fi) required to support Intelligent Transportation Systems (ITS) applications. This includes data exchange between high-speed vehicles and between the vehicles and the roadside infrastructure, so called V2X communication, in the licensed ITS band of 5.9 GHz (5.85-5.925 GHz). IEEE 1609 is a higher layer standard based on the IEEE 802.11p.[1] It is also the base of a European standard for vehicular communication known as ETSI ITS-G5.

88W8987xA drivers are readily available for the Android, Linux and QNX drivers are available for 88W8987xA, and the family of SoC is sampling today, with mass production starting in Q4 2017.

Via eeNews Europe

UBPorts Project Announces its First Stable Ubuntu Touch Release for Supported Smartphones

June 15th, 2017 No comments

Canonical may have stopped working on Unity, Mobile & Convergence for Ubuntu last April, but since then, at least two teams have worked on Unity and mobile convergence alive with respectively yunit and UBPorts projects. There has not been much activity on the former, but UBPorts has recently announced the first OTA-1 stable release for supported devices, minus Nexus 4 and 5 for now.

Click to Enlarge

This release brings bug fixes, experimental AGPS support, he UBports Welcome app, the OpenStore, and the Terminal and File Browser are preinstalled.  It should work on OnePlus One, FairPhone 2, Optimus L90, BQ Aquaris M10 HD / FHD, and possibly some other models.

They also mentioned work on Halium – a project aiming to standardize the Android hardware compatibility layer between many Linux distributions – has been progressing nicely, and it can now boot both Ubuntu Touch and Plasma Mobile. Convergence still needs some work, but one of the developers demoed it on a Nexus 5 here. Anbox support is also planned in order to support Android apps in Ubuntu, but it’s a low priority for now.

If you are interested in learning about future releases, or helping fix bugs, you can do so on the Milestones page.