Archive

Posts Tagged ‘review’

Star Cloud PCG02U Ubuntu 14.04 TV Stick Review

May 24th, 2016 9 comments

Star Cloud PCG02U is the first Ubuntu product from MeLE. After taking a few pictures of the TV stick and the board, I’ve tested the performance and functionality of the device.

First Boot and Setup

You can either connected the stick directly into an HDMI port, or using the provided female to female adapter via an HDMI cable. I’ve opted to insert the device directly into the AUX port of my Onkyo A/V receiver itself connected to my TV. Since there’s only one USB host port, USB keyboard and mouse are not convenient since it would add a USB hub, so I went with Logitech MK270r wireless mouse & keyboard combo instead. You can either used Ethernet or WiFi for Internet connectivity, and I opted for the latter for most of the review, but WiFi is also working fine.

Star_Cloud_PCG02U_Ubuntu_TV_Stick_AV_ReceiverThe final step is to connect the power supply into the micro USB port, and boot the device which takes around 20 seconds. Power consumption is a low 3.4 watts in idle mode, and 0.4 watts while powered off. The system automatically login to Unity desktop shell with user “pp” without password. But if you do need to perform some administrative tasks as root, pp password is 123456.

PCG02U_User_AccountsSo you’ll probably want to go to “User Accounts” to Unlock the settings, and either add a password to pp, or create a new user.

PCG02U_Time_DateTime is set to New Year by default, so I changed that to match my local, as well as the Clock setting to display the time using a 24-hour clock, instead of the default 12-hour clock.

PCG02U_Software_Update_Server_ConfigThe download server for updates is configured to use servers in China by default. This  will likely be slow in most countries, so you’ll want to select a server for your country, or simply use the “Select Best Server” feature.

Ubuntu_Select_Best_ServerI also disabled “Online search” and removed “Amazon” icon from the dashboard.

Ubuntu_Disable_AmazonI completed the initial setup by installing the latest updates as well as OpenSSH server:

PCG02U System Information

Now that I have a system configured to my taste, let’s check some of the system information from the terminal start with Ubuntu and Linux kernel versions:

It’s not surprising that they went with Linux 3.16 since it was the only option to get HDMI audio until recently. MeLE did use Linuxium image possibly with some modifications.

MeLE also created pp user, but I’m not sure they did other improvements.

I still had 20GB free storage after installing the latest upgrade, with LibreOffice and Firefox pre-installed.

The system reports 1.9GB memory and a 1.9GB swap partition that’s barely used.

You can only see 159 MB free memory, simply because of lot of it is used as buffer/cache, not because Ubuntu is about to run out of memory.

cpuinfo show four cores, but I’m only showing one below.

Finally, I’ve installed hardinfo mostly to confirm the previous findings.

PCG02_hardinfo

Star Cloud PCG02U Benchmarks

Phoronix Benchmark

I’ll first use Phoronix to benchmark the TV stick.

I also installed psensor to monitor the CPU tempetature.

Before running the same benchmarks that was run on several ARM Linux development boards.

You can find the results on openbenchmarking.org, but as the tests were underway, the temperature seemed under control never going above 79 C, and I soon realized that the governor was setup to “Powersave”, so I changed that to “Performance”, and ran the tests again.

Click to Enlarge

Click to Enlarge



So finally we have the results for both lowpower and performance governors, and the results are not that much different. Let’s see some of the results compared to  ARM boards. Please note that “MeUbuntu 14.04.3” is actually the test for PCG02U in powersave mode.

Click to Enlarge

Click to Enlarge

First Star Cloud PCG02 is faster than ARM boards in some, but not all of the tests.

PCG02U_John_The_Ripper

John the ripper multi-threaded password cracker still works best on Banana Pi M3 octa-core ARM Cortex A7 board.

PCG02U_Himeno_Benchmark_3.0But Himeno benchmark is way much faster on Intel than ARM. Himeno page mentions that version 1.2.0 “use AVX2 by default if available”, so while the test still used version 1.10, and I did not find x86 optimization in the source code, it’s quite possible the compiler makes use a SIMD instruction on Intel, but not on ARM, or that ARM NEON is not quite as good as SSE2, AVX… instructions on Intel processors.

PCG02_FLAC_Audio_EncodingFLAC audio encoding is also confirming the better performance of the Intel platform here, although the gap to ODROID-XU4 is not as wide as for Himeno benchmark. Audio encoding would also benefit from SIMD instructions so that may explain it.

Network Performance

I tested both Ethernet and WiFi with iperf.

Full duplex transfer with Fast Ethernet shows very good performance:

I repeated the test with WiFi in one direction only, and the connection seems pretty good too:

Storage performance

I install IOZone to benchmark the internal flash.

I used the command line armbian community uses to test random read and write speed initially:

Random read @ 121 MB/s and write at 70MB/s is not too bad, but I can’t explain why they are random I/O are faster than sequential ones, so I repeated the test again with basically the same results.

I did two more runs with a larger file to test sequential read and write speed more accurately.

75MB/s sequential write speed and 125 MB/s sequential read speed are rather typical values for low cost Intel platforms.

Star Cloud PCG02U Usability Testing

In the final part of the review, I’ve test some common apps including:

  • Chrome web browser
    • Multitab browser
    • Adobe flash with Candy Crush Saga game
    • YouTube playing at 1080p
  • Libreoffice with text files, spreadsheet and presentations
  • Kodi 16.1 playing 1080p60 H.264 and 1080p24 H.265 videos
  • SuperTuxKart 3D games

You can watch the user’s experience in the video below.

Basically, I’m very happy with the performance of the device for desktop tasks, as everything worked smoothly. Video playback in YouTube and Kodi 16.1 ws not 100% perfect though, but still watchable, and finally SuperTuxKart ran pretty well at around 25 fps.

Overall, I’ve very satisfied with MeLE PCG02U TV stick, especially considering the $70 price tag, and you’ve got a fully working Ubuntu device suitable for desktop tasks, although multi-tasking should probably be limited due to the 2GB RAM. I’d like to thank MeLE for providing the sample, but we should also thank Linuxium for his work on the Ubuntu for Intel Atom Z3735F devices. You can currently purchase Star Cloud PCG02U for $69.76 including shipping, except for resident of the United Stated, Canada and Mexico, because MeLE has an agreement with another reseller targeting business consumers.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

Popcorn Hour A500 4K Linux Media Player Specifications, Unboxing, and Teardown

May 23rd, 2016 20 comments

CloudMedia introduced Popcorn Hour A500 Pro last summer on Kickstarter, and as the company is about the ship rewards to backers, they has now recently introduced a lower cost version, called Popcorn Hour A500, based on the same processor but overall lower specs to bring the price down to $269. The company has  sent me a review sample, so I’ll start by listing the hardware specifications, and post pictures of the device and its internals, before testing media playback capabilities later on.

Popcorn Hour A500 Specifications

The “non-PRO” version has less RAM, dropped the XLR connectors, and  uses a cheaper audio DAC:

  • SoC – Sigma Designs SMP8758 dual core ARM Cortex A9 processor @ 1.2 GHz with ARM Mali-400 GPU and VXP image processing engine
  • System Memory – 1GB  DDR3
  • Storage – 512 MB SLC NAND Flash for firmware, 1x SD card reader, internal SATA bay for 2.5″ and 3.5″ hard drives
  • Video Output – HDMI 1.4a up to 3840×2160 @ 30 Hz, RCA connectors for component and composite video
  • Audio Output
    • Digital – HDMI, optical S/PDIF, and coaxial S/PDIF up to 192 kHz sampling rate
    • Analog – Stereo RCA jacks
    • Audio DAC – ESS SABRE Audio DAC ES9023P
  • Video Containers – M1V, M2V, M4V, M2P, MPG,VOB TS, TP, TRP, M2T, [email protected], MTS, AVI, ASF, WMV, MKV, 3DMKV, MOV, MP4, RMP4
  • Video Codecs – HEVC, VP9, H.264, MPEG-4.2-ASP, SMPTE 421M, AVS, H.261
  • Audio
    • Formats – AAC, M4A, MPEG audio, WAV, WMA, FLAC, OGG, APE, TTA, DSD
    • Decoders – DTS, WMA, WMA Pro, MPEG-1 (Layer 1,2,3), MPEG-4 AAC-LC, MPEG-4 HE-AAC, LPCM, FLAC, Vorbix
    • Gapless playback – DSD (DSF & DFF), SACD ISO, MP3, WAV and FLAC
  • Connectivity – Gigabit Ethernet; optional 802.11ac WiFI via  BL-WDN600 USB dongle; optional 802.11 b/g/n via WN-150 or WN-160 USB dongle
  • USB – 2x USB 2.0 host, 1x USB 3.0 slave
  • Misc – IR receiver, IR extender port, power and network LEDs
  • Power Supply – 12V/3A
  • Dimensions – 182 x 158 x 56 mm (Aluminum enclosure)

It’s also an update compared to Popcorn Hour VTEN that features a single core Cortex A9 processor, and no internal SATA bay. The media player runs Linux with NMJ (Networked Media Jukebox) navigator user interface, and you can also control the device with Android or iOS Mobile NMJ navigator app.

Popcorn Hour A500 Unboxing

The package is massive (and heavy) compared to the Android TV boxes I’m used to receive.

Popcorn_Hour_A500_PackageThe accessories also highlights some of the feature of the device with for example a USB 3.0 slave cable to use the box as an external hardware, and the screws and key for 2.5 ” and 3.5″ SATA support.

Click to Enlarge

Click to Enlarge

Other items include a HDMI cable, a 12V/3.33A power supply and power cord, the remote control and two AAA batteries, a quick start guide, and a warranty card explaining the device comes with one year warranty. The yellow sticker on the top of the device confirm it is a fanless design with an aluminum case that may get rather hot during use.

Click to Enlarge

Click to Enlarge

The media player itself feels of very good quality with its metallic enclosure. The front panel has a window for the IR receiver and LEDs, one of the side feature the SATA bay, an SD card slot, as well as a USB 2.0 port, while the rear panel has plenty of connectors: IR extension hack, USB 3.0 salve port, Gigabit Ethernet, another USB 2.0 host port, HDMI 1.4 output, composite and component RCA connectors, stereo audio RCA connectors, optical and S/PDIF RCA connector, the DC jack and finally a power switch.

Popcorn_Hour_A500_Hard_Drive_SATA_BayI unlocked the SATA bay with the provided key to connect a 3.5″ hard drive. The four holes on the bottom are for 2.5″ HDD and are meant to be used with the four small screws.

Popcorn_Hour_A500_HDD_InstallationBut for a 3.5″ HDD, you’ll use the larger screws and the opening on the side of the SATA slot. Then push the slot back into the case to insert the drive into the SATA connector.

Popcorn Hour A500 Teardown

Let’s open the thing. You can leave the four feet alone, and loosen the four other screws on the bottom, the two screws on the top corner of the rear panel and remove the SATA bay to open the device.

Click to Enlarge

Click to Enlarge

The case has been made by SilverStone, a company that appears to be popular for PC chassis. By the way, while the case is of very good quality, the key to lock / unlock the SATA is made of plastic, and was unusable when I tried to unlock of SATA bay, as its edges were damaged. I spent around 15 minutes to find alternative tools to unlock it, and retrieve my hard drive. So when the teardown was complete, and I put everything back together, I’ve not locked the SATA bay. We’ll see how it goes.

Click to Enlarge

Click to Enlarge

There’s no much to see on the top of the board, but I still took another picture with a different angle to show the SATA connector.

Click to Enlarge

Click to Enlarge

I loosen four more screws to have a look at the other side of the board.

Click to Enlarge

Click to Enlarge

There’s a thermal pad attached to the metal case, with some thermal past to dissipate heat from the Sigma Designs SMP8758 processor. That’s the only point I could see where heat from components is actually conducted to the metal case. Other components include SKhynix H27U4G8F2DTR NAND flash (8GB), and two SKhynix H5TQ4G63CFR DDR3 chips (1GB RAM in total), and Atheros AR8035-A Gigabit Ethernet transceiver.

Cloud Media sells Popcorn Hour A500 directly on their website for $269 plus shipping, and through resellers.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

Getting Started with Beaglebone Green Wireless Development Board

May 21st, 2016 5 comments

SeeedStudio introduced BeagleBone Green Wireless based on BeagleBone Green, but replacing the Ethernet port by a Wilink8 WiFi and Bluetooth module, and providing 4 USB ports in total. I’ve also ready taken some picture of the board, and Grove Base Cape to addition the company’s add-on boards via I2C, UART, analog, or digital interfaces. So today, I’ll report about my experience getting started with the board.

First Boot of BeagleBone Green Wireless

Since the board comes with a Debian image installed on the internal 4GB eMMC flash, checking out the board should be really easy. The Wiki may help, but for a first try to check the board is indeed working, you can simply connect it to a 5V power supply, or the USB port of your computer to port it up.

I’m using a development machine running Ubuntu 14.04 with both Ethernet connected to my router, and a WiFi USB dongle which I used to find and connect to BeagleBoneXXXXXX access point. You’ll get assigned an IP address (e.g. 192.168.8.138), and can access the board using 192.168.8.1.

BeagleBone_Green_Wireless_Access_PointAlternatively, you could use the micro USB to USB cable to connect the board over IP. In Linux, it just works, but in Windows or Mac OS X, you may need to following the instructions to install the drivers.
BeagleBone_Green_Wireless_USB_Ethernet

You should see a new ethX device in your computer in 192.168.7.x subnet

Now you can start your favorite web browser, and access the board using http://192.168.8.1 (WiFi), or http://192.168.7.2 (USB Ethernet gadget) to get access to some documentation in the board, and links to tools like Node-RED,  Cloud9 IDE, and BoneScript.

Click to Enlarge

Click to Enlarge

Updating Firmware Image

Now that we’ve made sure we’ve received a working board, it might be a good idea to update the firmware. Bear in mind that the board will officially start shipping on May 30, 2016, and I got an early board, so the final image may differ.

I’ve open a terminal to download, extract, and flash the image to a 16GB micro SD card (4GB or greater required):

Replace sdX in the command line above, your own SD card device which you can check with lsblk.

This is an installer image designed to install Debian in the internal storage of the board. While the board is turned off, insert the micro SD card, hold the USER button (on board or Cape), connect the power supply, release the button, and the installation should start. The instructions mention that all 4 USRx LEDs will be lit solid when the update is complete and that it may take up to 45 minutes. So I went for dinner, and when I came back over one hour later, I did not see the LEDs were on, so I waited a little longer. But eventually, I decided to turn off the board, remove the micro SD card, and boot the board again.

After connecting to the BeagleBone SSID, I access the board with SSH successfully:

The date was 2016/05/16, so the update was successful.

BeagleBone Green Wireless Network Configuration

So far, everything went rather smoothly, but setting up networking was more of a challenge.

Since I now had two network interfaces on my computer with Ethernet to my router and WiFi to BeagleBone Green Wireless (BBGW), Internet traffic was routed to both, and since BBGW had no network connection I often had problems accessing the net to browse the web or send emails. So I had two options: change the routing table or connect the board to my router. I tried the routing table method first, which looked as follows initially:

After my attempt at changing metric to a high value did not work as expected, I changed the route from “link” to “host” for WiFi so that only the local traffic is routed there.

This did not work that well either, so I went with plan B to connect the board to my router. Network connections in BBGW:

So we wan t to configure wlan0 to connect to my router. Remember that only 2.4 GHz can work,  as the board does not support 5 GHz.

So I edited /etc/network/interfaces with vi, and added the following four line at the end of the file:

I save the done, and brought down and up the interface:

Awesome! Only problem is that after reboot, wlan0 would not acquire an IP address, and I had to run ifdown and ifup manually again.

I switched to static IP address configuration:

But the same problem occurred, so I asked on the beta group mailing list, and was informed that I could configure that using my smartphone. Simply connect BBGW AP, go to the sign-in page (http://192.168.8.1/login), click the select SSID, and enter password. That method is also mention in the system reference manual.

Click to Enlarge

Click to Enlarge

That’s supposed to be so easy, but sadly it did not work at all for me the first time as none of the ESSID were detected, but I tried the day after, and it eventually worked… I just don’t know why…

Click to Enlarge

Click to Enlarge

I could connect to 192.168.0.111 on my local network, even after a reboot. Good.

Node-RED in BeagleBone Green Wireless

Node-RED is a tool for wiring together hardware devices, APIs and online services in new and interesting ways, and it’s one of the tools available in BBGW web interface. The link is actually hardcoded to http:192.168.7.2:1880, which is a bug, but you can easily access the page using your own IP and 1880 port. I found one example for BeagleBone Black to turn on and off user LEDs, which I imported into Node-RED, and Deployed to the board.

BeagleBone_Green_Wireless_Node-REDClick on the square on the left of the “on” / “off” injector with turn on or off LED 2 or 3. You can change settings of one block by double-clicking  on it, and I’ve done so for bbb-discrete-out: USR2. You can see it will let you select whatever output pin supported by the board, change the name, invert values and so on.

BeagleBone_Green_Wireless_Node-RED_GPIO_Selection
The Blue gray “injectors” will either “0” or “1” string to the bbb-discrete-out nodes to change the GPIO status.

One interesting part of the BeagleBone Green boards are Grove connectors for add-on modules with the same name.

Click to Enlarge

Click to Enlarge

I’ve connected Grove LED strip (Digital I/O), Grove Button (Digital I/O), and a digital light sensor (I2C), but Node-RED does not list the LED strip , and only shows the analog Grove light sensor, so I was left with the Grove Button connected to GPIO 51 as marked on the silkscreen of the Grove connector on the cape. So I dragged and dropped Grove Button in Node-RED, and configured it to poll for GPIO_51 every 500 ms.

BeagleBone_Green_Node-RED_Button_ConfigurationI planned to turn on and off some user LEDs, but connecting directly to bbb-discrete-out node for USR2 LED did not work. The problem is that I could not find documentation for this, except something about GrovePi, which explains that the Grove Button sends a JSON object containing a ‘state’ key:

So I probably would have to use another block to convert that JSON objects into “0” or “1” strings to controlled the LED/GPIOs. I’m not quite familiar enough with Node-RED, so I switched to testing Cloud9 IDE. [Update: There’s a tutorial using Node-RED, WioLink and BBGW, but it currently lacks in details]

Cloud9 IDE on BeagleBone Green Wireless

Cloud9 is a cloud based development environment that you can access using http://<IP_address>:3000.

Click to Enlarge

Click to Enlarge

The first neat thing I noticed is that you have access to the console as root from within the web browser, so SSH is not even needed with the board. I quickly checked the OS version (Debian GNU Linux 8) and kernel version (Linux 4.4.9-ti-r25) to test it out. We’ll also find several Python examples for BBG and Grove modules in the left panel.

Click to Enlarge

Click to Enlarge

I’ve open grove_i2x_digital_light_sensor.py demo program.

Access the terminal in the board to install the missing module

Another error:

So I’ve checked the I2C interfaces in the board:

There’s no i2c-1, so I changed the code to try with I2C-2 used with the Grove connector on BBGW:

And it went a little further:

I stopped there as it’s clear the sample have not been ported to the board, and to compound the issue Seeed Studio Wiki is currently down.

So I’ve had my share of issues with BeagleBone Green Wireless, but remember that the board is not shipping yet, so they still have time to improve the firmware and especially documentation. Yet I was expecting an easier experience considering the board leverages code and documentation from BeagleBone Black (software compatible), and there’s only about 10 days left before the retail boards ship.

If you are interested in the board, you can purchase BeagleBone Green Wireless for $44.50, the Grove Base Cape for $9.90, and various Grove modules on Seeed Studio website.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

$44.90 BeagleBone Green Wireless Board Adds 802.11n WiFi & Bluetooth 4.1 LE and More USB Ports

May 16th, 2016 2 comments

After BeagleBone Air, there’s now another BeagleBone Black derived board with WiFi and Bluetooth, as BeagleBone Green gets a wireless version with WiFi 802.11n, Bluetooth 4.1 LE, and four USB ports.

BeagleBone Green Wireless Specifications

Click to Enlarge

Click to Enlarge

The Ethernet port is also gone, but most of the other specifications remain the same as seen from the comparison table below.

BeagleBone Black BeagleBone Green BeagleBone Green Wireless
SoC Texas Instruments Sitara AM3358 ARM Cortex-A8 processor @ 1GHz with NEON, PowerVR SGX530 GPU, PRU…
System Memory 512MB DDR3 RAM
Storage 4GB eMMC flash + micro SD slot
USB 1x USB client, 1x USB 2.0 host 1 USB client, 4x USB 2.0 host ports
Network Connectivity 10/100M Ethernet Wi-Fi 802.11 b/g/n & Bluetooth 4.1 LE
Video Output HDMI N/A
Expansion Headers 2×46 pin headers 2×46-pin headers and 2x Grove connectors
Debugging 6-pin serial header and unpopulated 20-pin JTAG header
Dimensions 86.3 x 53.4 cm
Price $55.00 $39.00 $44.90

BeagleBone Green Wireless (BBGW) and Grove Base Cape for Beaglebone v2.0

The board is designed and manufactured by Seeed Studio, and the company send me an early sample for evaluation together with Grove Base Cape for Beaglebone v2.0 that supports up to 12 extra Grove modules. I’ve not had time to review both yet, so I’ll show what I’ve received first.

BeagleBone_Green_Wireless_PackageI got two unbranded packages for each board, but I understand BBGW board will be send in a retail package with two WiFi antennas, and a micro USB to USB cable for power.

BeagleBone Green Wireless with Antennas (Click to Enlarge)

BeagleBone Green Wireless with Antennas (Click to Enlarge)

I got the two antennas, but not the USB cable. There are two u.FL connectors where you can insert the antennas. The wireless module is Texas Instruments WiLink8 (model WG78V0) that supports WiFI 802.11 b/g/n @ 2.4 GHz 2×2 MIMO and Bluetooth 4.1 LE. The four USB ports are on the left, and two Grove connectors (I2C & UART) on the right.

Click to Enlarge

Click to Enlarge

The bottom of the board has the micro SD slot, micro USB port for power, and unpopulated 20-pin JTAG solder pads. The board can run Debian, Android, Ubuntu, Cloud9 IDE on Node, and all other operating systems supported by BeagleBone Black. The wireless module support AP+STA mode, as well as A2DP & MRAA Libraries. The board is shipped with a Debian based firmware, and you can easily access it by accessing http://192.168.8.1 from your computer web browser to get some documentation. Resources for the board can be found on the BeagleBone Green Wireless Wiki.

Click to Enlarge

Click to Enlarge

Grove Base Cape for Beaglebone v2.0 has 4x digital I/O headers, 2x analog input headers, 4x I2C headers, and 2x UART headers, as well as a I/O voltage selector (3.3V or 5V), a Cape address switch, and a user button. More details about the grove base cape can be found in the Wiki.

Click to Enlarge

Click to Enlarge

I plan to write test the board, and the cape with some of the Grove module I got in Wio Link Starter Kit in the next few days.

BeagleBone Green Wireless pre-sells for $44.90 on Seeed Studio with shipping scheduled for May 21, 2016, while Grove Base Cape for Beaglebone v2.0 goes for $9.90.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

Getting Started with Wio Link Starter Kit, Visual Programming Android App, and IFTTT

May 15th, 2016 1 comment

Wio Link is a board based on on ESP8266 WiSoC that supposed to be easy to setup thanks to Grove modules – no breadboard and mesh or wires – and, as I first understood it, to program thanks to a drag and drop mobile app that does not require any actual programming. More advanced users can also use a RESTful API in Python, JavaScript, Node.js, PHP, Objective-C or Java. I’ve been sent a $49 Wio Link Starter Kit including the board, a USB cable, and six Grove modules to evaluate the kit. I’ll start by have a look a the kit, before experimenting with Wio Link Android app.

Wio Link Starter Kit Unboxing

The kit is sent in a red plastic case.

Click to Enlarge

Click to Enlarge

Wio Link board is lodged in the top covers, and other accessories placed in bags in the main part of the case.

Click to Enlarge

Click to Enlarge

Let’s check the board first.

Click to Enlarge

Click to Enlarge

There are three main ICs: ESP8266EX WiFi SoC, Silabs CP2102 USB to TTL chip for programming the board, and Winbond 25Q23BVIG serial flash memory (4MB). On the right side, the micro USB port is used for power and debugging, a header can be used for battery power, and Config and Reset buttons are present. The six Grove connectors can either take digital (3) modules, analog (1) modules, I2C (1) modules, or UART (1) modules.
ESP8266_Board_Open_Source_Hardware

The bottom side of the board does not any components, and the only noticeable parts are Seed Studio and Open Source Hardware logo, as well as http://iot.seeed.cc which point to documentation and forums for the board.

Click to Enlarge

Click to Enlarge

Once I’ve taken everything out of the small bags, we can see the fully kit content with Wio Link board, a micro USB port, and from top left to bottom right, six Grove modules and their cables: WS2812 LED strip (25 LEDs), temperature and humidity sensor, button, digital light sensor, 3-axis digital accelerometer, and a relay module.

Grove_Module_MarkingsIf you have many Grove module, it may not always be easy to know which one does what, but the Grove module is printed on the silkscreen on the back the board.

Wio Link Android App

Wio / Wio Link app is available for both Android 4.1+ and iOS 7+, and I tested the board with the Android app, following some of the instructions on the Getting Started Guide.

Click to Enlarge

Click to Enlarge

The first step is to login or create an account with your email, before setting up Wio Link, or the small and soon-to-be released Wio Node.

Click to Enlarge

Click to Enlarge

At this stage, I had to power Wio Link board. I did so by connecting Wio Link to one of the port my USB hub, and I noticed the red LED would blink very fast, but pressing on the Config button as instructed in the app would not do anything, and Wio Link was not detected at all. So I changed to a proper 5V/2A power supply, and the red LED was steady, with the green LED in the middle of the board slowly blinking, and after pressing the Config button for about 4 seconds, the blue TURN lit up. So if the board does not work, try another power supply. The USB cable should be OK, as it’s shipped with the board.

After that you can select Wio (WioLink_XXXXXX), select an access point (AP) to connect the board to the Internet, and give your board a name – I went with cnxwio – to complete the setup.

Click to Enlarge

Click to Enlarge

Then you can select module on the bottom, the app will show you where you can drag and drop it (Digital. Analog, UART, or I2C), and then repeat the same process with the other modules.  I had the idea of making a demo reporting the temperature and humidity, while turning off the LED strip with the accelerometer, and turning it on with the button module, so I connected the four modules in the app and in “real life”.

Wio_Link_LED_Strip

Once you are happy with the setup, tap on Update to flash the firmware to the board. This should take a few seconds. At this stage I was expecting to be able to do some more visual programming, but all you can do is tap on API to get the API info, and experiment with the API. So rather than a complete programming solution, Wio app is an help for program development.

Click to Enlarge

Click to Enlarge

The three screenshots above show the list of Wio Link boards and their connected modules, and one API call to control the LED strip, namely to make it “blink in a rainbow flow”. You can also share the API by email or other method to get the API calls on your computer and get on with programming. This is the list of API calls I got with the four modules. You can simply use the command link in a Linux computer (or now Windows Subsystem for Linux) to monitor and control the board with curl. You can also use Python or other programming languages to use the API, as show in wio_link_execute.py that controls a traffic light.

But for the purpose of this review, I did not want to write code, only use graphical tools or app, so my next option was IF by IFTTT app.

Wio_Link_IFTTT_Setup

Right after  you start the app, tap on the top right icon to Browse recipes, select “Create a New Recipe“, tap on “+”  (Start Here!) icon, and search for Seeed trigger. The first time you’ll be redirected to login to Seeed Studio – which the password created at the beginning of this tutorial – in your browser, and once it’s done you’ll be able to “Monitor a sensor value”, select one action related to the sensors connected to Wio Link, and complete the trigger. I wanted to detect when the button is pressed (The value should be 0 when pressed) on the Grove module. There’s a big caveat doing this, but more on that later.

Click to Enlarge

Click to Enlarge

Now click Next to select the “That” step, and again search for Seeed to select one of the “Actions”, and configure it. I wanted to turn on the LED strip, and selected “light up Grove WS2812 LED strip” and “Random Rainbow”, before pressing on Finish to complete the action.

Click to Enlarge

Click to Enlarge

That’s all good, except for one detail. It did not work, as pressing the button had not effect. After configuring the accelerometer to turn off the LED strip, I started to receive notifications every 2 to 5 minutes about the “shaked” status. So I went to recipe, modified it to turn on the LED when the accelerometer is shaken, and press the Check Now button to verify it, and the LED strip indeed lit up. So unless I’ve somehow missed an important option, that meant IFTTT is not suitable for my use case, because everything is handled from the cloud, and it’s not “polling” the sensors quite often enough.  However, If you want to monitor the temperature sensor, and take an action if the temperature rise above a threshold, that’s perfectly usable as long as it can be taken within a few minutes.

Click to Enlarge

Click to Enlarge

As one last experiment, I set the LED strip to turn on each time I receive a new email in my gmail account. It did not work for the first email, even after waiting a few minutes (5+ minutes), and then pressing “Check Now”. So I sent another email, waited one or two minutes without results, and pressed “Check Now” again, and the LED strip finally turned on.

So the takeaway is that Wio Link app does make setting up the board easier, and also provide an easy to use reference to the API after the configuration, but it’s not a pure visual programming app per se, and you’ll need to write your own program using the RESTful API. Alternatively IFTTT app can be used to control the board using triggers from the Internet (Facebook, twitter, emails, ….) or sensors from the Grove module, and the app then take actions using the Grove modules such as relays or LED strips, but there are some limitations to what can be done, and my experience with IFTTT and Wio Link was mixed.

I’d like to thank Seeed Studio for sending Wio Link Starter Kit for evaluation. You can purchase the kit for $49 on Seeed Studio if you are interested.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

Star Cloud PCG02U Ubuntu TV Stick Unboxing and Teardown

May 14th, 2016 11 comments

Star Cloud PCG02U is one of the rare device selling pre-loaded with Ubuntu 14.04, and MeLE, who owns Start Cloud brand, sent me one sample for review. While many Android & Windows devices can be “hacked” to run Linux distributions such as Ubuntu, Star Cloud PCG02U is the first device that I’ve ever received that’s actually shipped with Ubuntu 14.04. So it will be very interesting to find out how it performs, but today, I’ll check the device and its accessories, as well as the hardware design.

Star Cloud PCG02 Unboxing

The TV stick ships  in a Ubuntu orange retail packaging with Star Cloud branding, and mention of Ubuntu and Intel.
Star_Cloud_PCG02U_PackageI had already published the specifications in my first post, a confirmation on the package is always good.

Click to Enlarge

Click to Enlarge

The TV stick ships with a 5V/2A power adapter and multi-country plug adapters, a female to female HDMI adapter, a Quick Start Guide in English, and a notice reading “Caution Hot” that warns you the thing may get hot. It’s not really reassuring, but the case is made of metal used to dissipate heat from the processor, so that’s probably why.

Click to Enlarge

Click to Enlarge

The stick has two levels of thickness due to the Ethernet port on one of the ends.

Click to Enlarge

Click to Enlarge

Other ports include an HDMI 1.4 male port, a Kensington lock, a full size USB port, a micro USB port for power only, the power button, and a micro SD slot. There’s also an external WiFi antenna.

Mele_PCG01_Star_Cloud_PCG02Finally, I’ve taken a picture with MeLE PCG01 TV stick to show PCG02 is both longer and thicker due to the Ethernet port.

Star Cloud PCG02U Teardown

You’ll need some sharp tool, preferably in plastic, to take out the metal cover on the bottom.
PCG02U_Teardown
They’ve installed a thermal pad to conduct heat to the enclosure.

PCG02U_thermal_pad
Removing it reveals Realtek RTL8723BS 802.11 b/g/n WiFi (2.4 GHz only) and Bluetooth 4.0 module, and the RTC battery seen through cuts out of a metal shield. I’m not sure Bluetooth is supported by the included driver, as MeLE did not list this feature in their specs.

Click to Enlarge

Click to Enlarge

After removing the shield we can see FORESEE NCEMBSF9-32GB eMMC flash (32GB), and two Samsung K4B4G1646Q-HYK0 DDR3 ram chips (2 x 512 MB). The next step is to loosen the three screws to take out the mainboard from the case. Be careful not to damage the Wifi antenna wire, or the wires connected to the Ethernet daughter board during this step.

Star_Cloud_PCG02U_CoolingThere’s also a metal shield on that part of the PCB, and more thermal pads and various metal plates for cooling the fanless stick. Three or four bit of the shield go through the board, and a folded to open it in place. So first I had to straightnen out those, and I could remove the shield.

Click to Enlarge

Click to Enlarge

One that side, we’ve got Intel Atom Z3735F Bay Trail processor,  two more Samsung RAM chip that brings the total to 2GB, and AXP288D PMIC. I’ve finally removed one more bock with a metal sheet, a metal plate, and a thermal pad to uncover the Ethernet “daughter board”.

Click to Enlarge

Click to Enlarge

Ethernet is implemented with AXIS AX8872CLF USB 2.0 to Fast Ethernet controller, M-TEK H16107SEG 10/100M Ethernet transformer, as well as what should an EEPROM to store the MAC address. One more thermal pad and metal sheet have been installed to make sure the device cools properly. At least, they’ve made some serious efforts working on the thermal design, but we’ll have to see how well it works.

I’d like to Thanks MeLE for sending Star Cloud PCG02U Bay Trail Ubuntu TV stick for review, and if you are interested you can purchase it on Aliexpress for $69.74 including shipping. Please note that MeLE PCG02U will not ship to North America (US, Canada, Mexico), as distribution will be handled by a yet-to-be disclosed third party.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

Debian on DragonBoard 410c Development Board

May 6th, 2016 29 comments

I purchased Qualcomm DragonBoard 410c development board last year, and first tested it and run some benchmark on the 96Boards compliant hardware with Android. I found that it was still work-in-progress, and decided to wait before trying Debian on the board. I’ve now done so, and will report by experience installing Debian Linux, playing with the board, and running Phoronix benchmarks to compare it to other ARM Linux boards.

Installing Debian on DragonBoard 410c

The first challenge is to navigate through the documentation that is not always clear or up-to-date. I eventually ended up on DragonBoard 410c Wiki on Github.

DragonBoard_410c_Debian_Android_Opearting_SystemsYou then have to decided which image you want. While there are two official operating systems with Android and Debian, you can three “entities” releasiong their own images. For Debian specifically, you have the Linaro image, and Reference Platform Build (RPB) image. I could not find any changelog or known issues with the former, but the latter as its own Wiki with the latest release being RPB 16.03 (March 2016), and the next one scheduled to be RPB 16.06 in June.

That’s the current list of known issues

  • bug 285 USB host doesn’t detect any plugged devices
  • bug 121 [RPB] Cannot soft power off or shutdown db410c
  • bug 284 [RPB] Dragon board Display sleep not working
  • bug 289 [RPB] USB devices don’t work after reboot
  • bug 207 [RPB] Bluetooth does not work on Dragon board debian
  • bug 153 [RPB] Missing information about hwpack usage

USB host not working did not inspire confidence, so I first tested the Linaro image. The (other) Wiki points to the “latest version”, but the link would point to Linaro Debian 16.02 release, while I could find a more recent Linaro Debian 16.04 which I downloaded in a terminal:

I used a micro SD card to install it. If you use Windows, simply use Win32DiskImager, but in computer running Linux or in Windows via Windows subsystem for Linux, you may want to do it in the terminal. First check the SD card device with lsblk. Mine was /dev/sdb, but your may be different, and I use /dev/sdX in the command below tp flash the Debian installer to a micro SD card:

Now remove the micro SD card from your computer and insert it in to the board, set the jumper to boot from SD card on the DragonBoard 410c, and connect the power. I could see LED 1 blinking, but nothing on my HDMI TV. Last time, I did not  manage to make the serial console (requiring a 1.8V USB to TTL board or cable) using Hardkernel ODROID board, so I went to the support forums, and after several minutes of reading, I found that the RPB image is recommended, as well as a clear explanation between the Linaro and RPB images:

Use the Reference Platform Build instead of the Linaro release. The Reference Platform is an integrated build with support for multiple boards, and that is where all engineering effort is going. The Linaro build is the old single-platform image that we’re not working on anymore.

The reference platform will run on all 96boards CE (Consumer Edition) and EE (Enterprise Edition), while the Linaro image is built specifically for a given board, and they are not really working on it. [Update: This answer was specific to Hikey board, and for DragonBoard 410c there are two images provided by Qualcomm Landing Team and the Reference Platform team]

So let’s start again from scratch using the RPB image, and download the bootloader, Linux kernel and rootfs to my Ubuntu computer:

Now find a micro USB to USB cable to connect to DragonBoard 410c, install fastboot…

.. and check the device is detected:

Good. After making sure the jumper switch is set to 0000 on the board again, we can  extract the three files, and install Debian as follows:

That was a lot of commands to install the operating system… Now you can unplug the board, remove the micro USB cable, and connect the power again. After a few seconds, you should see the kernel log, and eventually LXDE desktop environment.

Click to Original Size

Click to Original Size

You’ll be asked to configure WiFi, and you’re basically done.

DragonBoard 410c Debian System Info

I’ve then run a few command to learn more about the image and system:

One of the main advantage of 96Boards should be recent Linux version,and that’s exactly what we have here with Linux 4.4 running on the board. Out of a total of 866MB reported RAM, 64MB is free, and the 6.9GB rootfs has 4.8 GB available to the user. Snapdragon 410 SoC is correctly reported as being a quad core Cortex A53 (0xd03) processor.

I used file utility to make sure a 64-bit rootfs is being used here:

Finally, there’s a bunch of modules pre-loaded on the board:

Testing Debian on DragonBoard 410c

The thing that often do not work on ARM Linux board are 3D graphics and hardware video decoding, so I’ve specifically tested these two, and also played with the pre-installed Chromium browser.

If I understand correctly the debian image comes with Freedreno open source graphics driver, and if that’s the case I have the first ever platform with working open source 3D graphics drivers:

So that means both framebuffer and X11 3D graphics acceleration are working. Nice !

I also tried to play Tuxracer as it was part of the board’s test results provided by Linaro.

It works, but it’s so slow that it’s barely playable (see video below).

I installed VLC to play 1080op h.264 videos, but based on the CPU usage the system is clearly using software decoding, and there’s no audio via HDMI. I’ve asked about those two issues on the forums about 24 hours ago, but I have yet to get a reply.

Chromium loads OK, but I did notice some freezes during use, and YouTube will struggle at full screen at 1080p, in similar way to many other low end ARM Linux platforms.

DragonBoard 410c Linux Benchmarks

Let’s install the latest version of Phoronix…

…and run some benchmarks to compare against other development boards:

After over 3 hours the results are in. Bear in mind that the board does not have heatsink, just a metallic shield, and this may affects the performance. It’s also running an OS with a 64-bit ARM rootfs, while platforms like Raspberry Pi 3 features a 64-bit processor running 32-bit code.

Click to Enlarge

Click to Enlarge

I like to check John the Ripper for multi-threaded performance.

DragonBoard_410c_Phoronix_John_The_RipperWhile FLAC audio encoding is nice to single threaded performance.

DragonBoard_410c_Phoronix_FLAC

In theory the CPU performance of Snapdragon 410 and Broadcom BCM2837 (as found in RPi 3) should be equal since both are quad core Cortex A53 processors @ 1.2 GHz, but for some reasons DragonBoard 410c is a little slower in the multi-threaded benchmark, and quite faster during FLAC audio encoding likely due to software differences (Aarch64 vs Aarch32).

You can find the full results @ http://openbenchmarking.org/result/1605068-GA-1604204GA12

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

Setup Guide & Mini Review of BQ Aquaris M10 Ubuntu Edition Tablet from a Developer’s Perspective

April 30th, 2016 21 comments

BQ Aquaris M10 UBuntu Edition is the first officially supported Ubuntu tablet on the market. Blu, a frequent commenter on this blog, has purchased the Full HD version, and in the guest post below, shares his experience setting up the device for development purpose, before shortly providing his overall impressions about the tablet itself.

Quick introduction

Ever since I had to retire my trusty-but-ancient ARM notebook (a Genesi Efika iMX51) I’ve been looking for a new ARM notebook or perhaps a 2-in-1 device, that I could use for development on the go. The basic requirements are long battery life, passive cooling and reasonable price. Also, Just Enough Power™ for running vim, a couple of toolchains (gcc/clang with gold) and, well, enough grunt to run my coding experiments. Naturally, BQ M10 Ubuntu Edition immediately got my attention to the extent of me placing an order, which got delivered this past week. Allow me to share my impressions from the M10 so far.

Click to Enlarge

Click to Enlarge

First thing first: turning the M10 into a coder’s productivity device

There is plenty of know-how on the web regarding how to ‘unlock’ a Ubuntu Touch device into a full-fledged Linux box, but here we will describe the minimum steps to achieve this, moreover without the need for a desktop. The M10 needs to be on a Wifi network with Internet access, though.

From the Ubuntu Store, install the terminal application – access to the store requires a registration with a valid email address. Once we have that, we have proper control over our device via the on-screen kbd or via a physical Bluetooth or micro USB kbd.

What we immediately see from the above is that the device hosts a quad Cortex-A53 r0p3 (CPU part 0xd03), and the userspace is armhf – ’CPU architecture’ in /proc/cpuinfo should say ‘AArch64’ for an arm64 userspace; instead it says ‘8’ on an armhf userspace.

Typing on the on-screen kbd is a mere curiosity, so before we get ourselves a decent Bluetooth kbd or a micro USB-to-female-USB adapter (for a standard usb kbd) we will need something better to type on. Getting an ssh server on the device takes a minimal effort – the package is already installed, it just needs enablement. We also need a public ssh key ready on the desktop machine, as the ssh server is factory-configured for public-key access only. So, assuming we have our public key handy on the desktop, we need to do the following in our M10 home:

Now we can ssh to [email protected]_ip and enjoy a proper kbd. Apropos, the final step of actually enabling the ssh server should also be achieved via engaging the tablet’s Developer mode in the About This Device tab in the system settings.

A quick look at the mounted filesystem shows that the rootfs is mounted as read-only, and that can be a show-stopper for any apt-get we plan to do next. So we need to enable read-write mode on the root fs via:

Please note that the system will automatically reboot after this command; our rootfs will be write-enabled after that. Then we can:

Just be warned that keeping the rootfs in write-enabled state actually disables OTA updates of the tablet fw. So once we’re done with apt-get for the day, we might want to:

For reference, these are the g++ and clang++ versions that we can get on the tablet currently from the standard vivid repositories:

Running (natively-built) binaries from within our home folder takes some tinkering, though. The reason for that is apparmor – this daemon is factory-configured to not allow the execution of apps from the /userdata mount-point (/userdata/user-data is where our home is at). To solve that inconvenience, we need to find the app profile of our indispensable terminal app, and edit it appropriately to allow the execution of binaries from our home.

Please note the actual version of the terminal app might be different. In there we find the following lines:

And add to them:

Followed by:

So, now we can build and test our code on the M10. A couple of notes:

  • Since this is an armhf userland, i.e. it’s 32-bit ARM, the default target of gcc/g++ is thumb2 (as per Canonical’s worldview) – one might want to pass -marm to the compiler for a few more percents of performance.
  • There’s a compressed ramdrive of the size of 0.5GB taken from our precious little 2GB RAM; it’s used as a swap partition. Whether that’s a beneficial decision for our purposes is not clear.
  • The Cortex-A53 in the MT8163A (i.e. the 1.5GHz version) appears to be somewhat slower in this configuration than other vendor’s A53s of the same revision (e.g. Rockchip’s RK3368 @ 1.51GHz). I don’t know what to attribute this to yet. Could be because of intricacies of the scheduler and/or performance manager, though the latter should be bog standard cpufreq. Or because of the lxc container with a minimal android providing the display painting services. Or it could be a hw difference somewhere in the cache hierarchy. An investigation is pending in the indefinite future.

Informal impressions

The M10 is a solidly-built piece of ‘luggable’ electronics, AKA portable things you always lug along in your backpack for 24/7 accessibility. Whenever I’ve found myself wishing for something more in the M10, it’s normally been a sw issue. Back to my original criteria for a productivity portable, its battery life is nice – lasts between one and two days of trivial coding use – vim, build, test, repeat. The pricing is slightly on the upper side for this class of hw, IMO, but hey, early adopters’ premium (which apparently I was willing to pay). For the price one gets a cluster of Cortex-A53 at (almost) industry-standard performance levels, 2GB of RAM and 16GB of eMMC (of ~150MB/s read BW). The quality of the screen also bears mentioning – it’s quite nice – better than that of my aging Acer netbook.

That said, the things that need improving going forward:

  • Android needs to go; Canonical need to pull their act together and provide a proper 100% Linux on this class of devices. Whether that includes ‘muscling’ vendors like MediaTek into conformance or just paying for the development of native graphics stacks – that’s rather irrelevant to the end user.
  • Along the above: out with the armhf and in with the arm64 userspaces on aarch64 hw – it’s about darn time.
  • Prices need to get more realistic, but that’s a matter of market adoption, I guess. At least, for the price of the M10 one should be able to get 4GB or RAM.
Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter