User Tools

Site Tools


picoPrint Software Documentation

Install Gentoo Linux on Cubieboard2

Install & bootstrap crossdev

$ emerge -av crossdev

Create a stable armv7a-hardfloat-linux-gnueabi tool chain for the Cubieboard2:

$ crossdev -S -t armv7a-hardfloat-linux-gnueabi

Install and compile u-boot

$ mkdir gentoo-cb2
$ cd gentoo-cb2
$ git clone https://github.com/linux-sunxi/u-boot-sunxi.git
$ cd u-boot-sunxi

Start clean and configure Cubieboard2 default u-boot parameters

$ CROSS_COMPILE=armv7a-hardfloat-linux-gnueabi- make distclean
$ CROSS_COMPILE=armv7a-hardfloat-linux-gnueabi- make Cubieboard2_config

should return

Configuring for Cubieboard2 - Board: sun7i, Options: CUBIEBOARD2,SPL,SUNXI_GMAC,STATUSLED=244,STATUSLED1=245,FAST_MBUS

Build u-boot

$ CROSS_COMPILE=armv7a-hardfloat-linux-gnueabi- make -j4

should return something like

tools/mkimage -A arm -T firmware -C none \
        -O u-boot -a 0x4a000000 \
        -e 0 \
        -n  "U-Boot 2014.01-rc1-09153-gc75ea90 for sunxi board" \
        -d u-boot.bin u-boot.img
Image Name:   U-Boot 2014.01-rc1-09153-gc75ea9
Created:      Wed Jan  8 10:47:48 2014
Image Type:   ARM U-Boot Firmware (uncompressed)
Data Size:    227820 Bytes = 222.48 kB = 0.22 MB
Load Address: 4a000000
Entry Point:  00000000
tr "\000" "\377" < /dev/zero | dd ibs=1 count=32768 \
                of=spl/sunxi-spl-pad.bin 2>/dev/null

and produce the following files we will need:

-rw-r--r-- 227884 Jan  8 10:47 ./gentoo-cb2/u-boot-sunxi/u-boot.img
-rwxr-xr-x 17644  Jan  8 10:47 ./gentoo-cb2/u-boot-sunxi/spl/u-boot-spl.bin

Install and compile kernel

Get the sources

$ cd ..
$ git clone https://github.com/linux-sunxi/linux-sunxi.git
$ cd linux-sunxi
$ git checkout sunxi-3.4

Prepare the kernel

Use default config to get something to start with

$ CROSS_COMPILE=armv7a-hardfloat-linux-gnueabi- ARCH=arm make sun7i_defconfig

Tweak your kernel according to your wishes

$ CROSS_COMPILE=armv7a-hardfloat-linux-gnueabi- ARCH=arm make menuconfig

The kernel seems to fail to compile when the following settings are enabled:

  • Networking support → [*] RF Switch subsystem support

Solution: Disable RF Switch subsystem support (not needed on CB2 anyways).

  • Power Management options → [*] Run-time PM core functionality

Solution: Disable Run-time PM core functionality or apply the following patch.

--- arch/arm/mach-sun7i/pm/standby/mem_printk.c 2014-01-08 12:42:26.641644236 +0100
+++ /tmp/mem_printk.c   2014-01-08 12:42:18.706835502 +0100
@@ -165,7 +165,7 @@
        int  negative = 0;                //defualt is positive value
        int  i;
        int  j;
-       char digit_string[] = "0123456789ABCDEF";       
+       char * digit_string = "0123456789ABCDEF";       
        
        if(value == 0)
        {
@@ -211,7 +211,7 @@
        char stack[16];
        int  i;
        int  j;
-       char digit_string[] = "0123456789ABCDEF";       
+       char * digit_string = "0123456789ABCDEF";       
        
        if(value == 0)
        {
@@ -366,7 +366,7 @@
 {
        //fill with space ' ' when align request,
        //the max align length is 16 byte.
-       char fill_ch[] = "                ";
+       char * fill_ch = "                ";
        if (len < align)
        {
                //fill at right

Compile kernel

$ CROSS_COMPILE=armv7a-hardfloat-linux-gnueabi- ARCH=arm make -j4 uImage
Image Name:   Linux-3.4.75-00001-g9cfbbed-dirt
Created:      Wed Jan  8 12:55:16 2014
Image Type:   ARM Linux Kernel Image (uncompressed)
Data Size:    4385184 Bytes = 4282.41 kB = 4.18 MB
Load Address: 40008000
Entry Point:  40008000
  Image arch/arm/boot/uImage is ready

Compile modules

$ CROSS_COMPILE=armv7a-hardfloat-linux-gnueabi- ARCH=arm make -j4 modules

Install and compile sunxi-tools

$ cd ..
$ git clone https://github.com/linux-sunxi/sunxi-tools.git
$ cd sunxi-tools
$ make bin2fex fex2bin
$ git clone https://github.com/linux-sunxi/sunxi-boards.git
emerge -pv nginx pycurl mjpg-streamer

GPIOs

nginx config

worker_processes  1;

events 
{
    worker_connections  1024;
}

http 
{
    include            mime.types;
    default_type       application/octet-stream;
    sendfile           on;
    keepalive_timeout  65;

    map                 $http_upgrade $connection_upgrade 
    {
        default         upgrade;
        ''              close;
    }

    upstream            "octoprint" 
    {
        server          127.0.0.1:5000;
    }

    upstream            "framecam" 
    {
        server          127.0.0.1:8080;
    }

    server 
    {
        listen       80;
        server_name  feliks;

        client_max_body_size 50M;

        location /framecam/
        {   
            proxy_pass http://framecam/;
            proxy_buffering off;
        }
        
        
        location /sockjs
        {  
            proxy_pass http://octoprint;   # NO trailing slash 
            proxy_buffering off;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection $connection_upgrade;

        }

        location / 
        {
          
            set $pp_d http://127.0.0.1:5000;
            if ( $args = 'action=stream' ) {
                set $pp_d http://127.0.0.1:8080/$is_args$args;
            }
            
            if ( $args = 'action=snapshot' ) {
                set $pp_d http://127.0.0.1:8080/$is_args$args;
            }

            proxy_pass $pp_d;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host:$server_port;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_set_header X-Forwarded-Port $server_port;
            proxy_set_header X-Request-Start $msec; 
          
        }

        # redirect server error pages to the static page /50x.html
        error_page   500 502 503 504  /50x.html;
        location = /50x.html 
        {
            root   html;
        }
    }
}

Discussion

geometry dash, 2024/05/29 01:45

Calling all gamers! If you've ever dreamed of a game that rewards precision and rhythm, then geometry dash is your dream come true. It's a platformer that combines the elegance of geometry with the thrill of a dance, and it's ready to welcome you into its world.

Karehristie, 2024/06/19 10:21

Papa's Games also offers valuable lessons in time management, organization and customer service. Players can hone their multitasking skills and learn valuable strategies for success in both the virtual and real worlds.

leona, 2024/06/24 08:19

Papa's Scooperia - a fun and exciting ice cream restaurant management game that offers the experience of running a family ice cream business.

Felton Rolfson, 2024/07/08 04:15

Thanks for this insightful guide on PicoPrint software! It's great to find such detailed explanations on optimizing printing processes. I particularly appreciated the section on compatibility with different devices, crucial for my work. By the way, if you enjoy mastering complex strategies like those in PicoPrint, you might also find https://playpokerogue.com, an innovative online game, quite captivating!

Fesicop1, 2024/07/18 04:26

You've found Papa Louie's virtual residence. You can play all of the greatest Papa Louie games online for free right here. What therefore is the essence of a Papa Louie game? Fantastic challenge, questionable corporate practices, and delicious cuisine! The bulk of https://papasgames.pro papa's games involve running restaurants and the kitchen. While tough, working in Papa's kitchen is exciting.

markangelo, 2024/07/24 09:11

I'm excited to see this project come together! It reminds me of how random video chat can connect people unexpectedly—looking forward to the progress!

Chris Crist, 2024/07/25 04:01

This article on PicoPrint software is a treasure trove of information! If you’re into tech and also like to have some fun, you should check out monkey mart

. It’s a fantastic way to take a break from techie stuff and dive into a playful virtual shopping experience. Perfect balance of work and play!

https://monkeymart.lol

Enter your comment. Wiki syntax is allowed:
F K M V H