Archive

Posts Tagged ‘open source’

EduMIP Self-Balancing Robot Kit Based on BeagleBone Blue is Now Available for $50

July 14th, 2017 1 comment

BeagleBone Blue is a board designed for robotics projects, and one of those projects is EduMIP self-balancing robot that was first designed around BeagleBone Black and a robotics cape, but so far was not available for sale. Renaissance Robotics is now selling the kit, without board, for $50.

EduMIP with Beaglebone Blue (left) and BBB and Robotics Cape (right) – Click to Enlarge

The kit has been designed by UC San Diego Coordinated Robotics Lab in order to teach robotics to students, and it works with BeagleBone Blue, or BeagleBone Black with the Robotics Cape and an optional WiFi dongle.

Some of the subjects that can be learned with eduMIP include:
  • Dynamic modeling and feedback control (classical, state-space, adaptive, …) of unstable systems.
  • Robot motion planning and collision avoidance.
  • DC motor control via (built-in) H-bridges and encoder counters.
  • Attitude estimation via (built-in) IMU and barometer.
  • Communication via (built-in) WiFi (802.11b/g/n) and Bluetooth (4.1/BLE).
  • Charging, balancing, protection, and monitoring of 2-cell LiPo (included).
  • Multithreaded event-driven C programming in Debian Linux.
  • Multithreaded Graphical System Design for embedded applications.


eduMIP is compatible with Python, ROS, MATLAB & Simulink, and LabVIEW.
The CAD designs for the hardware are released under a Creative Commons CC-by-v4 License, while source code is released under a 3-Clause BSD License. There’s no link to those resources on Renaissance Robotics website, but you should find everything you need in that Hackster.io page.

Opus 1.2 Allows for High Quality Stereo Music @ 32 Kbps, Speech @ 12 Kbps

July 10th, 2017 1 comment

The Xiph.Org Foundation has recently announced the release of Opus 1.2 open source audio codec with ever lower high-quality audio bitrate for music (32 Kbps) and speech (12 Kbps), faster encoding and decoding, and other tweaks to the standard and library. If you’ve never heard about Opus or need to refresh your memory, you may want to read my previous article about Opus Open Source Audio Codec.

The developers improve music quality by “adjusting the bit allocation trim, improving tonality analysis with better frequency resolution, and improving quality  on signals with a few very powerful tones”. You can compare Opus 1.0, 1.1 and 1.2, and MP3 at different bitrates with the samples below. You’ll need a browser that support Opus and MP3 in HTML5 for this to work (Chrome, Firefox and Opera do), or you may hear another samples as if Opus support is missing the file will be played as a very high bitrate MP3, and if MP3 support is missing, a very high bitrate Opus transcode will play instead.


Select codec/version

  • MP3 (LAME)
  • Opus 1.0
  • Opus 1.1
  • Opus 1.2
  • Uncompressed

Select bitrate

  • 32 kb/s
  • 48 kb/s
  • 64 kb/s
  • 96 kb/s

Select where to start playing when selecting a new sample


Speech has different requirements from music, and the developers improved the SILK and CELT encoders respectively handling up to 8 kHz, and 8 to 20 kHz in what they call hybrid mode. Opus 1.2 is said to add hybrid-specific tuning for both spreading and time-frequency resolution switching, and disables the use of the allocation trim. You can check out the samples below by yourself in browsers that support Speech and Opus.

Select codec/version

  • Speex
  • Opus 1.0
  • Opus 1.1
  • Opus 1.2
  • Uncompressed

Select bitrate

  • 12 kb/s
  • 16 kb/s
  • 24 kb/s
  • 32 kb/s

Select where to start playing when selecting a new sample


Beside improvements in quality at the same bitrate, or lower bitrate with the same quality, the encoder and decoders now operate faster on both ARM and x86 targets in most cases.

If you’d like to try it yourself, you can build the library and sample by adapting Opus build instructions to libopus 1.2.1.

Via XDA Developers

Categories: Audio Tags: codec, open source, opus

1btn is a Battery Powered Open Source ESP8266 WiFi Button

July 8th, 2017 17 comments

If you have some WiFi power switch like Sonoff TH16 at home, you’d normally control them using a mobile app or a web interface. This is all good, but getting your phone, unlocking it, and launching the app to turn on or off an appliance is not the most efficient way to operate, and in some cases, some people in the household may not know how to use a smartphone. Physical WiFi buttons are the solution, but there aren’t so many for sale. We’ve seen previously it was possible to hack an Amazon Dash, but it’s not really that flexible, and 1btn could potentially be a better option, as it’s open source and based on Espressif ESP8266 WiSoC.

1btn specifications:

  • WiFi Module – ESP-12F based on Espressif ESP8266
  • MCU – Microchip Atmel ATmegaxx8 AVR MCU
  • Connectivity – 802.11 b/g/b WiFi up to ~50 meter range
  • USB – 1x USB port for charging and programming (via on-board USB to Serial chip)
  • Misc – User button, multi-color LED, power on/off switch
  • Expansion –
    • AVR MCU – 2x 8-pin headers with ADC, I2C, SPI, RESET, 3.3V, and GND signals
    • ESP8266 – 1x 8-pin header with GPIO, Tx/Rx signals, 3.3V and GND signals
  • Battery – Rechargeable 3.7V/500mAh battery
  • Dimensions – Around 60 mm side to side
  • Weight – ~50 grams

The hardware design files, mechanical design, and NodeMCU (Lua) based firmware can all be found on Github, releases under an MIT license. The button can be used to send an email, text message (via Twilio SMS), or a tweet, as well as invoke an URL action allowing to use all sort of APIs and services such as IFTTT.


The Atmel MCU is used to keep battery life under check, as the button will only connect to WiFi then you press the button. It takes about 5 to 7 seconds to wake up from sleep, and send the message, after which the button goes back to sleep. The battery will last around 300 presses before it needs to be recharged, or about 5 months if you use the button twice a day.

1btn sells on Tindie for $40 plus shipping. That’s a little more than expected, so tried to look for alternative beside Amazon Dash, and I found “ESP8266 IFTTT WiFI Button Dev Kit” – aka Abutton – on Aliexpress going for $13.43 shipped. The button can be re-programmed with custom firmware, and is based on Apixel  ESP8266 dev board with an ESP8266, but not MCU, so it has to rely on ESP8266 low power mode, so battery life is likely to be quite lower than 1btn. Talking about batteries, there are none, and instead there’s a compartment for 2 AA batteries. The Arduino or NodeMCU source code for Abutton can also be found on Github.

Click to Enlarge

WiFi is not exactly the ideal wireless solution for this, that’s maybe why Bluetooth buttons are much more common, and quite cheaper, so maybe having a ESP32 wireless power switch with WiFi and Bluetooth, plus a BT button would be both a better and cheaper solution. The only problem is that AFAIK ESP32 wireless switches don’t exist right now, except in board form factor, and not in a neatly packaged product like the Sonoff switch.

Linux 4.12 Release – Main Changes, ARM & MIPS Architectures

July 3rd, 2017 6 comments

Linus Torvalds has just released Linux 4.12:

Things were quite calm this week, so I really didn’t have any real reason to delay the 4.12 release.

As mentioned over the various rc announcements, 4.12 is one of the bigger releases historically, and I think only 4.9 ends up having had more commits. And 4.9 was big at least partly because Greg announced it was an LTS kernel. But 4.12 is just plain big.

There’s also nothing particularly odd going on in the tree – it’s all just normal development, just more of it that usual. The shortlog below is obviously just the minor changes since rc7 – the whole 4.12 shortlog is much too large to post.

In the diff department, 4.12 is also very big, although the reason there isn’t just that there’s a lot of development, we have the added bulk of a lot of new  header files for the AMD Vega support. That’s almost exactly half the bulk of the patch, in fact, and partly as a result of that the driver side dominates  everything else at 85+% of the release patch (it’s not all the AMD Vega headers – the Intel IPU driver in staging is big too, for example).

But aside from just being large, and a blip in size around rc5, the rc’s stabilized pretty nicely, so I think we’re all good to go.

Go out and use it.

Oh, and obviously this means that the merge window for 4.13 is thus open. You know the drill.

Linus

Linux 4.11 provided various improvements for Intel Bay Trail and Cherry Trail targets, OPAL drive support, pluggable IO schedulers framework, and plenty of ARM and MIPS changes.

Some of the most notable changes in Linux 4.12 include:

  • Initial AMD Radeon RX Vega GPU support
  • BFQ (Budget Fair Queuing) and Kyber block I/O schedulers have been merged, meaning the kernel now has two multiqueue I/O schedulers suitable for various use cases that should improve the responsiveness of systems.
  • Added AnalyzeBoot tool to create a timeline of the kernel’s bootstrap process in HTML format.
  • Implemented “hybrid consistency model” for live kernel patching in order to enable the applications patchsets that change function or data semantics. See here for details.
  • Build of Open Sound System (OSS) audio drivers has been disabled, and will likely be removed in future Linux releases
  • AVR32 support has been removed

Some of the bug fixes and improvements for the ARM architecture include:

  • Allwinner:
    • Allwinner H3 –  USB OTG support
    • Allwinner H5 – pinctrl driver, CCU (sunxi-ng) driver, USB OTG support
    • Allwinner A31/H3 SPI driver – Support transfers larger than 64 bytes
    • AXP PMICs – AXP803 basic support, ACIN Power Supply driver, ADC IIO driver, Battery Power Supply driver
    • Added support for: FriendlyARM NanoPi NEO Air, Xunlong Orange Pi PC 2
  • Rockchip:
    • Updates to Rockchip clock drivers
    • Modification for Rockchip PCI driver
    • RK3328 pinctrl driver
    • Sound support for Radxa Rock2
    • USB 3.0 controllers for RK3399
    • Various changes for RK3368 (dma, i2s, disable mailbox per default, mmc-resets)
    • Added Samsung Chromebook Plus (Kevin) and the other RK3399 “Gru family” of ChromeOS devices.
    • Added Rockchip RK3288 support for ASUS Tinker board, Phytec phyCORE-RK3288 SoM and RDK; added Rockchip RK3328 evaluation board
  • Amlogic
    • New clock drivers for I2S and SPDIF audio, and Mali GPU
    • DRM/HDMI support for Amlogic GX SoC
    • Add GPIO reset to Ethernet driver
    • Enable PWM LEDs and LEDs default-on trigger
    • New boards: Khadas VIM, HwaCom AmazeTV
  • Samsung
    • Split building of the PMU driver between ARMv7 and ARMv8
    • Various Samsung pincrl drivers updates
    • ARM DT updates:
      • Enhancements to PCIe nodes on Exynos5440.
      • Fix thermal values on some of Exynos5420 boards like Odroid XU3.
      • Add proper clock frequency properties to DSI nodes.
      • Fix watchdog reset on Exynos4412.
      • Fix watchdog infinite interrupt in soft mode on Exynos4210, Exynos5440, S3C64xx and S5Pv210.
      • Enable watchdog on Exynos4 and S3C SoCs.
      • Enable DYNAMIC_DEBUG because it is useful for debugging
      • Increase CMA memory region to allow handling H.264 1080p videos.
    • ARM64 DT updates:
      • Exynos power management drivers support now ARMv8 SoC – Exynos5433 – so select them in ARCH_EXYNOS
      • Enable few Exynos drivers (video, DRM and LPASS drivers) for supported ARMv8 SoCs (Exynos5433 and Exynos7)
      • Add IR, touchscreen and panel to TM2/TM2E boards
      • Add proper clock frequency properties to DSI nodes
  • Qualcomm
    • Enable options needed for QCom DB410c board in defconfig
    • Added new PHY driver for Qualcomm’s QMP PHY (used by PCIe, UFS and USB), and Qualcomm’s QUSB2 PHY
    • Qualcomm Device Tree Changes
      • Add Coresight components for MSM8974
      • Fixup MSM8974 ADSP XO clk and add RPMCC node
      • Fix typo in APQ8060
      • Add SDCs on MSM8660
      • Revert MSM8974 USB gadget change due to issues
      • Add SCM APIs for restore_sec_cfg and iommu secure page table
      • Enable QCOM remoteproc and related drivers
    • Qualcomm ARM64 Updates for v4.12
      • Fixup MSM8996 SMP2P and add ADSP PIL / SLPI SMP2P node
      • Replace PMU compatible w/ A53 specific one
      • Add APQ8016 ramoops
      • Update MSM8916 hexagon node
      • Add PM8994 RTC
  • Mediatek
    • New clock drivers for MT6797, and hi655x PMIC
    • Fix Mediatek SPI (flash) controller driver
    • Add DRM driver and thermal driver for Mediatek MT2701 SoC
    • Add support for MT8176 and MT817x to the Mediatek cpufreq driver
    • Add driver for hardware random generator on MT7623 SoC
    • Add DSA support to Mediatek MT7530 7-port GbE switch
    • Add v4l2 driver for Mediatek JPEG Decoder
  • Misc
    • Added ARM TEE framework to support trusted execution environments on processors with that capability (e.g. ARM CPUs with TrustZone)
    • ARM64 architecture now has kernel crash-dump functionality.
  • Other new ARM hardware platforms and SoCs:
    • NXP – NXP/Freescale LS2088A and LKS1088A SoC, I2SE’s i.MX28 Duckbill-2 boards, Gateworks Ventana i.MX6 GW5903/GW5904, Zodiac Inflight Innovations RDU2 board, Engicam i.CoreM6 Quad/Dual OpenFrame modules, Boundary Device i.MX6 Quad Plus SoM.
    • Nvidia – Expanded support for Tegra186 and Jetson TX2
    • Spreadtrum – Device tree for SP9860G
    • Marvell – Crypto engine for Armada 8040/7040
    • Hisilicon – Device tree bindings for Hi3798CV200 and Poplar board
    • Texas Instruments – Motorola Droid4 (OMAP processor)
    • ST Micro – STM32H743 Cortex-M7 MCU support
    • Various Linksys platforms,  Synology DS116

The MIPS architecture also had its share of changes:

  • Fix misordered instructions in assembly code making kenel startup via UHB unreliable.
  • Fix special case of MADDF and MADDF emulation.
  • Fix alignment issue in address calculation in pm-cps on 64 bit.
  • Fix IRQ tracing & lockdep when rescheduling
  • Systems with MAARs require post-DMA cache flushes.
  • Fix build with KVM, DYNAMIC_DEBUG and JUMP_LABEL
  • Three highmem fixes:
    • Fixed mapping initialization
    • Adjust the pkmap location
    • Ensure we use at most one page for PTEs
  • Fix makefile dependencies for .its targets to depend on vmlinux
  • Fix reversed condition in BNEZC and JIALC software branch emulation
  • Only flush initialized flush_insn_slot to avoid NULL pointer dereference
  • perf: Remove incorrect odd/even counter handling for I6400
  • ftrace: Fix init functions tracing
  • math-emu – Add missing clearing of BLTZALL and BGEZALL emulation counters; Fix BC1EQZ and BC1NEZ condition handling; Fix BLEZL and BGTZL identification
  • BPF – Add JIT support for SKF_AD_HATYPE;  use unsigned access for unsigned SKB fields; quit clobbering callee saved registers in JIT code; fix multiple problems in JIT skb access helpers
  • Loongson 3 – Select MIPS_L1_CACHE_SHIFT_6
  • Octeon – Remove vestiges of CONFIG_CAVIUM_OCTEON_2ND_KERNEL, as well as PCIERCX, L2C  & SLI types and macros;  Fix compile error when USB is not enabled; Clean up platform code.
  • SNI – Remove recursive include of cpu-feature-overrides.h
  • Sibyte – Export symbol periph_rev to sb1250-mac network driver; fix Kconfig warning.
  • Generic platform – Enable Root FS on NFS in generic_defconfig
  • SMP-MT – Use CPU interrupt controller IPI IRQ domain support
  • UASM – Add support for LHU for uasm; remove needless ISA abstraction
  • mm – Add 48-bit VA space and 4-level page tables for 4K pages.
  • PCI – Add controllers before the specified head
  • irqchip driver for MIPS CPU – Replace magic 0x100 with IE_SW0; prepare for non-legacy IRQ domains;  introduce IPI IRQ domain support
  • NET – sb1250-mac: Add missing MODULE_LICENSE()
  • CPUFREQ – Loongson2: drop set_cpus_allowed_ptr()
  • Other misc changes, and code cleanups…

For further details, you could read the full Linux 4.12 changelog – with comments only – generated using git log v4.11..v4.12 --stat. You may also want to ead kernelnewsbies’s Linux 4.12 changelog once it is up.

Libre Computer’s Le Potato Amlogic S905X Development Board Goes for $25 and Up (Crowdfunding)

June 30th, 2017 30 comments

Up to now there were two notable Amlogic S905(X) development boards: ODROID-C2 and Khadas Vim. Shenzhen Libre Technology Co., Ltd, a Shenzhen startup, is about to bring one more to the market with Le Potato board, aka AML-S905X-CC, powered by Amlogic S905X processor with 1 or 2 GB RAM, and in a form factor similar to the Raspberry Pi 3 board.

Le Potato /AML-S905X-CC board specifications:

  • SoC – Amlogic S905X quad core ARM Cortex-A53 processor @ 1.5 GHz with penta core ARM Mali-450MP GPU, and Amlogic Video Engine 10
  • System Memory – 1GB or 2GB DDR3 RAM
  • Storage –  1x micro SD Card slot with UHS SDR104 support, eMMC module connector with HS400 support
  • Video Output – HDMI 2.0 Port, 3.5mm TRRS “AV” jack with CVBS (480i / 576i)
  • Audio Output – HDMI, AV jack (stereo audio), SPDIF output header, and I2S header
  • Connectivity – 10/100M Ethernet
  • USB – 4x USB 2.0 host ports
  • Expansion
    • ADC + I2S Header
    • 40-pin Raspberry Pi header with I2C, SPI, PWM, 5V, 3.3V, and GPIO
  • Debugging –  UART via header for access to the serial console
  • Misc – IR Receiver, onboard jumper for HDMI CEC or GPIO 11 selection, status LEDs,
  • Power Supply – 5V via micro USB port
  • Dimensions – Raspberry Pi 3 form factor

An optional heatsink will also be available for the board, and included in the kits, but not the cheaper rewards.

The company expects some level of upstream support for the board in Linux 4.13, with Linux 4.9 & 3.14 buildroots also available, and the Android 7.1 SDK from Amlogic. Debian and Ubuntu LTS Linux distributions will be officially supported, and you’ll be able to “easily package your own distributions as well.”

A short explanation about the “Libre” part in the company and project name was also provided:

Le Potato will have basic upstream support in Linux 4.13 and we will push for full support of the feature set of the board including the media components in upstream Linux. We will disclose as much as legally possible with regards to the design to help facilitate development of this platform and add-ons to this platform.

The board has launched on Kickstarter with a $25,000 funding target, and a 37 minutes video (not a typo) showing an overview of the board, as well as various demos. A $25 pledge should get you the board with 1GB RAM, which you’d need to up to $35 if 2GB is better suited to your project(s) or use case(s). Shipping adds $7 to the US, and $13/$14 to Europe, with other countries unavailable, and delivery scheduled for August 2017, right after the campaign ends.

A pretty detailed comparison between the board and competitors like ODROID-C2, Raspberry Pi 3 and Asus Tinkerboard is also provided on the crowdfunding page, and I found it to be fair, and the company clearly knows what they are talking about. Le Potato is the first board of the Libre Computer project, and if you look on the project website, a Rockchip RK3328 board – called Le Fly / ROC-RK3328-CC – should also be in the works. I had never heard about Shenzhen Libre Technology company before, but the Kickstarter page has been setup by Da Xue, who also happens to manage LoveRPi, a US distributor and reseller of electronic boards and accessories. [Update: I’ve been informed that LoveRPi is just managing the campaign, and is not directly related to the manufacturer]

Banana Pi BPI-R2’s U-boot & Linux 4.4 Source Code & MediaTek MT7623N Datasheet Released

June 28th, 2017 38 comments

Banana Pi BPI-R2 is a multimedia router board powered by MediaTek MT7623N quad core processor with 2GB RAM, 5 Gigabit Ethernet ports, up to two SATA ports, two USB 3.0 ports, HDMI output, and I/O headers. The board is not for sale yet, but the company has recently released the source code with U-boot and Linux 4.4.70, as well as a datasheet for MediaTek MT7623N processor.

The source code can be found on Github, so let’s see if we can build it:

After a couple of minutes, the build would end with:

For the very last step, it asks you to login as root / sudoer, which it should not do… But we end up with the images, so at least it builds:

MediaTek has also been active by committing patchsets for MT7623 to the Linux Kernel Mailing List, so mainline Linux is an eventual possibility for BPI-R2 board. We just don’t have a clear view of what works and what doesn’t with mainline.

Mediatek MT7623N PCIe Subsystem Block Diagram

The datasheet is a 1,235-page document, but the name “MT7623N Datasheet for Development Board” implies that it may actually be a subset of another larger and more complete datasheet. Nevertheless, it looks to have enough information to control peripherals like GPIOs, I2C, PWM, UART, timers, GMAC, USB, etc… You’ll also find BPI-R2 schematics (PDF only) in the board’s Wiki.

IceZero Lattice iCE40 FPGA Board is Designed for Raspberry Pi Zero

June 24th, 2017 3 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.

Olimex Introduces 40 Euros iCE40HX8K-EVB Board with Lattice ICE40 FPGA

June 23rd, 2017 No comments

Last year, Olimex launched their first FPGA board with iCE40HX1K-EVB. The board is very cheap at 22 Euros, but what you can do with it is limited since it only comes with 1280 logic cells. The company has now introduced an upgraded model called iCE40HX8K-EVB with 7680 logic cells, and more I/O headers.

Olimex iCE40HX8K-EVB specifications:

  • FPGA – Lattice Semi iCE40HX8K-CT256 FPGA with 7680 logic gates, 960 Logic Array Blocks, and 128 Kbit memory
  • System Memory – 256Kx16 SRAM (512KB SRAM)
  • Storage – 2MB serial flash
  • Expansion
    • 34-pin connector to access FPGA I/Os
    • 4x 40 pin connectors for GPIOs
  • Debugging / Programming – 10-pin “PGM” connector
  • Misc – 2x user buttons, reset button, 2x user LEDs, power & programming status LEDs
  • Power Supply – 5V via power jack
  • Dimensions – 67×65 cm

The board is open source hardware with the KiCAD schematics and PCB layout, BoM, and Gerber files available on Github. Lattice IceCube2 or Project IceStorm can be used to program the board. So that means we have an open source FPGA board designed with an open source CAD software (KiCAD), and programmable in Verilog with an open source tool (Project IceStorm).

iCE0-ADC Board

You can use the 34-pin connector to connect add-on boards such as:

  • iCE40-ADC with 100Mhz ADC
  • iCE40-DAC with 100Mhz DAC
  • iCE40-IO with VGA, PS2 and IrDA transceiver
  • MOD-DIO with logic analyzer level shifter with programmable 1.5-5.5V threshold.

The modules can be daisy chained with up to 4x DAC and 4x ADC modules.

Olimex iCE40HX8K-EVB can be purchased for 39.95 Euros on Olimex store, where you’ll also find the aforementioned add-on boards for 9.95 to 15.95 Euros.