TERES-I DIY Open Source Hardware hacker’s Laptop update

keyb

It’s have been long time since I blogged about our laptop project.

What is the status – we have first PCBs prototyped and most of parts works fine.

We had to make Matrix keyboard + I2C touchpad to USB converter board. We did this with small AVR.

For this project we couldn’t use any of our standard connectors – we had to source all new: mini HDMI connectors, USB host connectors, power jack, audio jack connectors all they had to be low profile and embedded inside the PCB, hence this off form of the main PCB:

PCB

The LCDs used in laptops are not as the normal LCDs, they are very thin only 3mm or less and as their cable is special as must have as low as possible number of thin wires knitted together in very thin round cable, is has to go through laptop plastic’s hinges and normal cable can’t fit there. This is why all laptop LCDs are not parallel RGB neither LVDS but use eDP interface.

For bad luck A64 do not support such interface so we start to search LVDS/HDMI/RGB to eDP converter ICs. What we found is that Western suppliers solutions (TI etc) are more expensive than A64 chip itself so no go. We found Chinese solution for $1 NCS8801 and we said – well this is our solution 🙂 we made PCBs prototype and sourced few chips then we struggled by the lack of documentation 🙂 The ‘datasheet’ is 30 pages and the only code which is on the net initializes registers at addresses not mentioned in the datasheet, after spending almost 4 weeks on this we gave up and start looking for another solution. We found ANX6345 which is a bit more expensive but has some code in Linux Kernel and seems used with Rockchip ICs, so we hope this to solve LCD issue. We designed new board and got the new prototypes few days ago so they wait open window on assembly line to be assembled, crossing fingers everything to work 🙂

The mechanical parts has their history too. In June we placed orders to several different suppliers for the plastic parts, speakers, touchpads, power adapters, screws, hinges, total 40 different parts which are inside the laptop. The orders were complete in July and consolidated as one shipment on August 6 they were expressed with TNT and 2 days later were at Sofia airport, but the troubles just began 🙂

To import something may seems very easy for outsiders, but has it’s tricks. Usually every component can be classified in several positions in customs tariff, for instance LCDs have at least 7-8 different codes at which they can be imported, like they can be classified as display for computing equipment, as display for TV, as display for signage, as display for metal processing machine, etc etc. The trouble is that all these positions had different import tax 🙂 and of course Bulgarian customs try to force you to pay on the highest tariff code unless you prove them other. Another issue is that there work mostly people with economic education and very few know electronics matter. Import tax starts from 0% for computer parts and go up to 4-5% for TVs and machines, not small amount when you talk for $200 laptop parts! So laptop parts were sitting on customs 3 weeks as customs officers were trying to tariff every hinge, screw, plastic etc part as different product to tariff it with the highest code. Fortunately after 3 weeks of thinking somebody with common sense allowed all laptop spare parts to be imported as such with 0% tax and we got them today, but the fight will continue as this was only 10% of the order which we wanted to receive promptly paying expensive air transport, remain 90% parts still travel by sea and will arrive end of September, so let’s see how they will tariff these when arrive 🙂

We get lot of request when the laptop will be done and we love all our impatient customers 🙂

Guys be sure that we do anything humanly possible to release it as soon as we can, but to design something from scratch which you had never did before is not easy, once we do this I’m sure we will easily make 10 other laptops, but first time is always more difficult, to arrange logistic of so many parts and produce is not less challenging.

 

P.S. I hope you like the “Super” key on our new keyboard above 🙂

OLIMEX KiCAD components libraries are uploaded on GitHub

logo

We uploaded all our KiCAD libraries on GitHub and going to maintain them there.

Why we do this?  Because many beginners who download our OSHW boards are confused by the messages from KiCAD for missing libraries 🙂 this is easy to solve by adding RELATIVE paths to search the libraries as  we always provide the library cache with the boards, i.e. all components used in the board are cached locally in the project directory, but again many beginners are confused.

Now they have all components we use in our daily work, uploaded and updated daily.

NOTE: These components are specific to OUR production, technology, limitations, way of work etc. They work optimally for us allowing us to achieve maximum yield during production. There is no guarantee of any kind that these same settings will be best for your own production, SO USE THEM ON YOUR OWN RISK!

There are tons of duplicated components which also are defined in original KiCAD libraries, again we did these as the KiCAD default libraries are made up to vendor datasheets and may not work well in our own production process.

To give you example: TQFP 0.5 mm step ICs per datasheet must have 0.3 mm width pads with 0.2 mm spaces between the pads, but using our process this yields in lot of shorts, so we made them with 0.25 mm pads width and 0.25 mm space, the 120 um thick stencils we use give best yield with 0.23 mm pad opening for solder paste – this may be not optimal for other manufacturer process who use other thickness stencils etc. BUT it works best for our technology and process based on our experience and tests.

Almost every components in our libraries have such considerations when it’s created. I hope you got the idea.

Note that almost none of our components have 3D draiwng, because our people still didn’t learn any 3D CAD tool well enough to make these, neither we use this KiCAD 3D drawing feature in our work. It may be improved in future, but for the moment if you need 3D drawing to some component you can do it by yourself and contribute back 🙂

 

 

A64-OLinuXino update, the Rev.B design will be possible to produce in industrial grade -40+85C, dual voltage eMMC 3.3/1.8V

А64-1cut

A64-OLinuXino first prototypes were made in March and lot of people wonder why we do not release for mass production this board yet 🙂 so we got lot of e-mails and I see there is need for blog post with update.

Here is the recap from the first prototypes:

  • RAM memory works at amazing 667Mhz clock much more than A20 and other boards and the board works stabile under stress tests for many hours
  • eMMC works fine, we didn’t test NAND Flash due to the missing Linux support probabbly this will stay just as option and we will assembly the boards with eMMC which is faster, better and in industrial temperature
  • Linux Kernel is 3.10.65 and works fine, we managed to run all peripherials
  • Audio In and Out is working
  • HDMI is working
  • USB host is working
  • USB-OTG is working
  • WiFi+BT is working
  • MIPI interface – no display which to use to test, any ideas?
  • HSIC interface – don’t know how to test, any ideas?
  • LiPo charger and step up works
  • LCD works
  • Ethernet Gigabit interface works just in master mode

While we worked on this board we found new PHY from Microchip which can be ordered in industrial temperature, we tested it with A20 and it works fine (we already have LIME2 version with it which is on prototype), so we decided to re-design the Ethernet part of A64-OLinuXino with it, this will allow us to produce A64-OLinuXino in industrial temperature grade -40+85C.

Another major upgrade for Rev.B is around eMMC interface, we re-designed it as per your feedback to be possible to work on programmable 3.3V and 1.8V thus to allow faster transfers.

Rev.B is routed at 90% we need 1 more week to complete it and run new prototypes. If everything goes smoothly we will be ready by end of the month.

 

Getting started with FPGA with only Free and Open source software and hardware tools tutorial

FPGA

iCE40 is the first FPGA family with completely Free and Open source software tools thanks to Clifford Wolf who put incredible amount of time to create tool which compiles Verilog code to iCE40 bitstream by reverse engineering the output of the closed source Lattice tools.

As soon as we saw his presentation at FOSDEM we decided that we should make iCE40 FPGA board to use with his IceStorm tools.

The result is iCE40HX1K-EVB completely open source hardware board with all CAD files on GitHub. Which could be programmed with IceStorm!

Clifford built his tool to work with the Lattice stick, there they use FTDI chip to program the board, something we do not like at all 🙂

In the next tutorials we will teach you how you can program iCE40HX1K-EVB with any other board or processor which have SPI, but we will start with Arduino-Leonardo or our equivalent OLIMEXINO-32U4.

OLIMEXINO-32U4 is also OSHW board and all CADs are available, Arduino IDE is also FOSS.

What you will need to follow this tutorial:

  • iCE40HX1K-EVB this is the core board with the FPGA, some buttons, LEDs, SRAM memory which will be very useful for the more advanced demos like VGA video generator, Oscilloscope with fast ADC etc which will follow
  • OLIMEXINO-32U4 which will act as programmer instead of FTDI, instead this board you can use any Arduino or other board just have to wire the SPI signals to the iCE40HX1K-EVB programming connector, in this caseOLIMEXINO-32U4 UEXT connector is used and we connect it with 10 pin ribbon cable to iCE40HX1K-EVB
  • CABLE-IDC10-15cm  to connect between boards 1. and 2.
  • USB-MINI-CABLE to connect OLIMEXINO-32U4 to your host computer where you will install Clifford’s IceStorm and will build your verilog code.
  • SY0605E  power supply 5V adapter for iCE40HX1K-EVB
  • optional but highly recommended USB-ISO – after burning several USB ports on laptops and desktops while playing with development boards now I’m very careful and do not connect anything directly, its very easy to drop tweezers or wire or drop of solder on top of the development board while it’s connected to your computer and the result is USB damage and expensive repair.USB-ISO saves all these troubles and isolate your precious computer from problems with shorts, over voltages etc.

Installing IceStorm

We will install IceStorm from sources so first we have to make sure we have all tools to build it:

    sudo apt-get install build-essential clang bison flex libreadline-dev \
     gawk tcl-dev libffi-dev git mercurial graphviz \
     xdot pkg-config python python3 libftdi-dev

 

Installing the IceStorm Tools (icepack, icebox, iceprog, icetime, chip databases):

    git clone https://github.com/cliffordwolf/icestorm.git icestorm
    cd icestorm
    make -j$(nproc)
    sudo make install

 

Installing Arachne-PNR (the place&route tool):

    git clone https://github.com/cseed/arachne-pnr.git arachne-pnr
    cd arachne-pnr
    make -j$(nproc)
    sudo make install

 

Installing Yosys (Verilog synthesis):

    git clone https://github.com/cliffordwolf/yosys.git yosys
    cd yosys
    make -j$(nproc)
    sudo make install

If everything completes with no errors – congratulations you successfully installed the IceStorm!

Preparing OLIMEXINO-32U4 as programmer

Now we have to prepare OLIMEXINO-32U4  as our FPGA programmer.

Download latest Arduino IDE . We recommend you to use the one from arduino.cc current revision is 1.6.9.

Copy iceprog.ino sketch from GitHub to examples folder.

Plug the USB cable to OLIMEXINO-32U4 and start the Arduino IDE

    cd arduino-1.6.9
    sudo ./arduino

From Tools menu select ‘Arduino Leonardo’ as board.

From the same menu select the PORT where the board is attached it will be something like: ‘/dev/ttyACM0 (Arduino Leonardo)’ or ‘/dev/ttyUSB0 (Arduino Leonardo)’

Open the iceprog.ino sketch.

From menu SketchInclude libraryManage libraries check if you have SPI and SPIFlash libraries installed if not install them.

Compile and Upload the sketch.

If everything complete without error now you have OLIMEXINO-32U4 set as iCE40HX1K-EVB programmer!

Add support for OLIMEXINO-32U4 in IceStorm

Copy iceprogduino folder from GitHub to icestorm folder and build it

    cd icestorm/iceprogduino
    make
    make install

Make your first program for FPGA – blink LED

Copy demo code from GitHub to icestorm/examples

    cd icestorm/examples/ice40hx1k-evb
    make
    make prog

If everything finish with no error you will see LED1 and LED2 blinking on iCE40HX1K-EVB.

Congratulations! You made blinking LED on FPGA!

Now check what is the content of example.v , ice40hx1k-evb.pcf and Makefile and learn why the LEDs blink and what happen when you press together BUT1 and BUT2?

Next tutorial will be how to use iCE40HX1K-EVB with A20-OLinuXino-MICRO as both host for the IceStorm tool and programmer via UEXT connector with just cable and what additional options it gives like loading the code directly to FPGA whthout using SPI flash and your can change FPGA code in milliseconds.

A20-CAN – new OSHW board designed with KiCAD adds CAN networking to A20-OLinuXino and A20-SOM

A20-CAN

Want to sniff your car’s CAN bus or to drive Industrial machines with CAN networking bus?

Allwinner A20 SOCs have CAN but almost no one use it. If I remember correctly it was not even included in the Allwinner documentation just two pins had CAN on their names, so many people doubt if there is or not CAN.

Fortunately some people investigated further and add proper CAN support for A20 Linux, so we decided to make small driver board which to allow A20-OLinuXino and A20-SOM to have CAN. What does this means? Now you can use A20-OLinuXino to talk to other devices with CAN like industrial equipment, automotive CAN bus etc etc.

Current Linux image we have is without CAN support, but we put instructions on our WiKi how to build one with Linux-Sunxi 3.4 Kernel and with Mainline kernel: https://www.olimex.com/wiki/A20-CAN

What you see above on the picture is our first prototype of A20-CAN it works well although we use 5V CAN driver and A20 is 3.3V device. We successfully connected AM3352-SOM-EVB to A20-OLinuXino-LIME with A20-CAN driver and exchanged some messages at the highest speed 1Mbit and it works fine.

All CAD files, Gerbers, BOM are in this Github account: https://github.com/OLIMEX/A20-CAN . The board is done with KiCAD.

The PCBs are now in production and in 2 weeks A20-CAN will be orderable on our web page . While the PCBs are made we will work to add the CAN in our official images, so you do not have to bother with Kernels configurations and re-compiling.

DORS/CLUC 2016 Open Systems, Croatian Linux Users’ Conference is in Zagreb 11-13 of May

dors

DORS/CLUC 2016 is oldest and biggest Linux even in Croatia. Here is the schedule of the conference: http://2016.dorscluc.org/schedule/

I have been invited to talk about Open Source Hardware, my talk is first day 11th of May at 14.00 o’clock. I’ll post the sildes on Slideshare later today.

 

EDIT: Slides are posted

iCE40HX1K-EVB open source hardware FPGA board designed with KiCAD and working with ICESTORM FOSS toolchain first prototypes are ready and run!

ice40-1

ice40-2

iCE40HX1K-EVB is our first iCE40 FPGA which works with ICESTORM FOSS toolchain.

It’s 5×5 cm 4 layer board with iCE40HX1K on it, 512KB 10 nS fast SRAM, UEXT as programming connector, so you can program it with OLinuXino (which can run also the tool chain on it) or with Olimexino-328 or any other boards we have with UEXT.

The original ICE40 development board from Lattice has FTDI on it, which we skip as to program it you need just SPI signals to load the bitstream to the on board Serial SPI Flash. Having the sources we easily modified the programming part and now all our Arduino and Olimexino boards can load the code generated by ICESTORM.

All free iCE40HX1K singals are available on right angle bus connector, to this bus connector we designed 4 additional boards:

  • iCE40-ADC fast 100Mhz ADC with BNC input connector so you can make Digital Storage Oscilloscope with p to 512 KB buffer
  • iCE40-DAC fast 100Mhz DAC with BNC output connector will allow you to make DDS generator with odd forms using the on board SRAM
  • iCE40-DIO fast IO with level shifter  with programmable by I2C DAC threshold in range 1.5-5.5V, so you can capture digital signals with different levels making inexpensive Logic Analizer
  • iCE40-IO with VGA and PS2 keyboard connectors board

iCE40-IO will allow you to emulate small retro computers.

All additional modules are stackable and the bus pass through them, so you can stack more than one ADCs or more than one DACs etc if you need more IO.

Next week we will test all modules, make corrections (if necessary) and run production. The price of iCE40HX1K-EVB will be EUR 22.00 and if everything goes smoothly we will have them in stock by June 1st.

These same boards will be used in the Tuxcon workshop “First steps with FPGAs” on July 10th.

Previous Older Entries Next Newer Entries