Overview

Didn't think the Raspberry Pi could get any better? You're in for a big surprise! The Raspberry Pi 2 Model B is out and it's amazing! With an upgraded ARMv7 multicore processor, and a full Gigabyte of RAM, this pocket computer has moved from being a 'toy computer' to a real desktop PC

The big upgrade is a move from the BCM2835 (single core ARMv6) to BCM2836 (quad core ARMv7). The upgrade in processor types means you will see ~2x performance increase just on processor-upgrade only.  For software that can take advantage of multiple-core processors, you can expect 4x performance on average and for really multi-thread-friendly code, up to 7.5x increase in speed!

That's not even taking into account the 1 Gig of RAM, which will greatly improve games and web-browser performance!

Best of all, the Pi 2 keeps the same shape, connectors and mounting holes as the Raspberry Pi B+. That means that all of your HATs and other plug-in daughterboards will work just fine. 99% of cases and accessories will be fully compatible with both versions

Please note: The new processor on the Pi 2 means that you will need to update your existing SD card or create a new SD card with your operating system (Raspbian, Arch, XBMC, NooBs, etc) because you cannot plug in olderscards from a Pi 1 into a Pi 2 without upgrading with sudo apt-get upgrade on the Pi 1 first.

Also, any precompiled software will not work at full speed (although supposedly the processor will be able to run it). Still, you'll likely want to have it recompiled for the new processor! For many people, this isn't a big deal, but if you have a pre-created Pi 1 Model A+B+ card image, just be aware it won't work without performing an 'sudo apt-get upgrade' on the older Pi 1 before installing on the Pi 2!

What to watch out for!

Watch out, the Raspberry Pi 2 Model B is VERY different from the Raspberry Pi Model B - check for that "2" when checking accessories and compatibility!
The Raspberry Pi 2 Model B looks *a lot* like a Raspberry Pi Model B+! Look for the chip on the bottom to identify the Pi 2

What hasn't changed

The basic form-factor of the Pi 2 Model B is nearly 100% the same as the Pi model B+

  • The shape and size of the PCB is the same
  • The 4 mounting holes are in the same location and are the same size
  • The USB, Ethernet, A/V, HDMI, micro SD and microUSB connectors are int the same exact locations and are the same size
  • The Camera, Display and 40-pin GPIO  connectors are in the same exact locations and are the same size

The physical changes include:

  • Processor chip is larger, has moved slightly
  • The RAM is now soldered onto the bottom of the board (no longer PoP)
  • Other components and chips are moved around slightly to make space for the larger processor and RAM chip on bottom

This means that 99% of cases designed for the Raspberry Pi Model B+ will work with the Raspberry Pi 2 Model B. This includes the Adafruit B+ Pi cases

One exception is some Pibow cases which have a layer that has cutouts for the specific location of the processor. Pimoroni has informed us that they will have a new case design that is compatible with both. Check the description of any case to make sure it is compatible with both Raspberry Pi Model B+ and Raspberry Pi 2 Model B

What has changed, watch out!

New Processor

The processor has completely changed on the new RaspberryPi 2, instead of a ARM v6 core chip (arm6l) the BCM2836 has been upgraded to an ARM v7 core which is a much more powerful core

However, your existing Raspberry Pi SD card images may not work because the firmware and kernel must be recompiled/adapted for the new processor.

If you have a Raspberry Pi 2, and you are trying to upgrade your existing SD card, you will need to upgrade your installation. To do that, log into your Pi 1 and at a console or terminal type in sudo apt-get upgrade to perform the upgrade procedure. You'll need your Pi to be on the Internet to do this. Once upgraded, the card will work on both Pi 1 and Pi 2 computers

If you have any pre-compiled binaries that you are downloading, those will need updating too, in order to take advantage of the speed increase. Anything where you have access to source code can be recompiled and ought to work just fine. Supposedly any ARMv6 software is forwards compatible with ARMv7 but we haven't tested it for sure yet

Power Draw

Quad-core ARMv7 processor means higher current draw.

Just having the Pi 2 Model B running idle (no HDMI, graphics, ethernet or wifi just console cable) the Pi 2 draws 200mA

With WiFi running, that adds another 170mA

If you have Ethernet instead, that adds about 40mA

When doing the heaviest computational tasks, we added about 200-250mA more current. So if you're really using your Pi 2 and you have a WiFi dongle, expect to need 650mA @ 5V, at least. More if you have stuff connected to the GPIO connector, other USB devices, Ethernet as well, etc!

If you're still running with a cheap 5V 700mA power supply, we really recommend upgrading to a 5V @ 2000mA!

How to tell if you have a Pi 2

Since the Raspberry Pi 2 Model B looks a lot like the Raspberry Pi Model B+ you'll want to get good at identifying which you have.

PCB Silkscreen Name

First up, you can look for the name which is near the GPIO connector:

Look for the "Raspberry Pi 2" text and you're golden!

Broadcom Logo on Processor

Since the Pi 2 does not use 'package-on-package', assembling the RAM on top of the processor, you can easily spot the Broadcom logo on top of the quad processor

If you don't see the logo, or you see something like "Samsung" or "Hynix" it's a B+

RAM chip on bottom

The Pi 2 has a RAM chip that is soldered onto the bottom of the Raspberry Pi's circuit board. The B+ does not have one at all, the RAM chip is soldered directly on the processor. So just look for a black square chip on the bottom of the PCB. The naming and logo on the RAM may vary depending on what company supplied the memory.

Benchmarks & Performance Improvements

The big reason to upgrade to a Pi 2 Model B over a classic Raspberry Pi Model B+ is the big boost in performance

The Pi 2 has 4 processors in one chip (the B+ has only one), an ARMv7 core vs an ARMv6, and 1 Gig of RAM vs 512 MB for the model B and B+

Those 3 improvements translate to pretty big performance increases!

 OK but how much faster is the Pi 2 vs the Model B+? While it strongly depends on what you're doing, you should see at least 85% improvement (single-core processes that just depend on the ARMv7 vs ARMv6 upgrade. For anything that can take advantage of multi-core processors, you can see up to 7x increase in speed!

Using the Pi as a computer feels fast and 'desktop like' - not sluggish! Particularly for developers, compiling code on the Pi 2 is 4x faster and the extra RAM helps a lot too, so most programs can now be compiled directly on the Pi. We still recommend our Pi Kernel-O-Matic for cross-compiling kernels since you need a lot of space & RAM

Compared to other Single-Board-Computers

You can see how the Pi 2 compares to the Arduino Yun / Beaglebone Black / Intel Galileo by checking out this earlier comparison guide (we'll be updating the guide shortly to add the Pi 2 numbers!)

We provide nbench numbers below that you can compare to the other computers until we update that tutorial...

nbench on Pi 2 @ 900MHz

TEST                : Iterations/sec.  : Old Index   : New Index
                    :                  : Pentium 90* : AMD K6/233*
--------------------:------------------:-------------:------------
NUMERIC SORT        :          444.24  :      11.39  :       3.74
STRING SORT         :          36.251  :      16.20  :       2.51
BITFIELD            :      1.2604e+08  :      21.62  :       4.52
FP EMULATION        :          69.824  :      33.50  :       7.73
FOURIER             :          4728.6  :       5.38  :       3.02
ASSIGNMENT          :          6.7648  :      25.74  :       6.68
IDEA                :          1297.9  :      19.85  :       5.89
HUFFMAN             :           654.5  :      18.15  :       5.80
NEURAL NET          :          6.2233  :      10.00  :       4.21
LU DECOMPOSITION    :          228.32  :      11.83  :       8.54
==========================ORIGINAL BYTEMARK RESULTS==========================
INTEGER INDEX       : 19.909
FLOATING-POINT INDEX: 8.599
Baseline (MSDOS*)   : Pentium* 90, 256 KB L2-cache, Watcom* compiler 10.0
==============================LINUX DATA BELOW===============================
CPU                 : 4 CPU ARMv7 Processor rev 5 (v7l)
L2 Cache            :
OS                  : Linux 3.18.5-v7+
C compiler          : gcc version 4.6.3 (Debian 4.6.3-14+rpi1)
libc                : libc-2.13.so
MEMORY INDEX        : 4.228
INTEGER INDEX       : 5.607
FLOATING-POINT INDEX: 4.769
Baseline (LINUX)    : AMD K6/233*, 512 KB L2-cache, gcc 2.7.2.3, libc-5.4.38

nbench @ 950MHz

TEST                : Iterations/sec.  : Old Index   : New Index
                    :                  : Pentium 90* : AMD K6/233*
--------------------:------------------:-------------:------------
NUMERIC SORT        :          481.57  :      12.35  :       4.06
STRING SORT         :            37.6  :      16.80  :       2.60
BITFIELD            :      1.1826e+08  :      20.29  :       4.24
FP EMULATION        :            87.4  :      41.94  :       9.68
FOURIER             :            5126  :       5.83  :       3.27
ASSIGNMENT          :          7.6138  :      28.97  :       7.51
IDEA                :          1450.7  :      22.19  :       6.59
HUFFMAN             :          705.88  :      19.57  :       6.25
NEURAL NET          :          6.3669  :      10.23  :       4.30
LU DECOMPOSITION    :          242.49  :      12.56  :       9.07
==========================ORIGINAL BYTEMARK RESULTS==========================
INTEGER INDEX       : 21.639
FLOATING-POINT INDEX: 9.082
Baseline (MSDOS*)   : Pentium* 90, 256 KB L2-cache, Watcom* compiler 10.0
==============================LINUX DATA BELOW===============================
CPU                 : 4 CPU ARMv7 Processor rev 5 (v7l)
L2 Cache            :
OS                  : Linux 3.18.1-v7+
C compiler          : gcc-4.7
libc                : libc-2.13.so
MEMORY INDEX        : 4.359
INTEGER INDEX       : 6.341
FLOATING-POINT INDEX: 5.037
Baseline (LINUX)    : AMD K6/233*, 512 KB L2-cache, gcc 2.7.2.3, libc-5.4.38
* Trademarks are property of their respective holder.

For comparison-geeks, note that if you overclock the Pi 2 to 900-1000 MHz it's essentially the same processing speed as a BeagleBone Black (also an ARMv7), but with the improved Floating Point capabilities. There's a lot of reasons to go with a BBB vs Pi2 so please note it's not that the Pi 2 is a 'replacement' for the BBB!

Sysbench tests (Compared to Pi B+)

Sysbench is a linux program that can do raw computational tests. It's a pure-math test, but will tell you the 'upper bound' for speed and is good for general comparison.

Running on a B+ @ 700MHz with one thread, we get:

Running the test with following options:
Number of threads: 1

Doing CPU performance benchmark

Threads started!
Done.

Maximum prime number checked in CPU test: 10000


Test execution summary:
    total time:                          523.7819s
    total number of events:              10000
    total time taken by event execution: 523.7231
    per-request statistics:
         min:                                 51.99ms
         avg:                                 52.37ms
         max:                                 54.81ms
         approx.  95 percentile:              53.54ms

Threads fairness:
    events (avg/stddev):           10000.0000/0.00
    execution time (avg/stddev):   523.7231/0.00

And for 4 threads:

Running the test with following options:
Number of threads: 4

Doing CPU performance benchmark

Threads started!
Done.

Maximum prime number checked in CPU test: 10000


Test execution summary:
    total time:                          523.1061s
    total number of events:              10000
    total time taken by event execution: 2091.9841
    per-request statistics:
         min:                                162.66ms
         avg:                                209.20ms
         max:                                252.29ms
         approx.  95 percentile:             232.33ms

Threads fairness:
    events (avg/stddev):           2500.0000/1.22
    execution time (avg/stddev):   522.9960/0.04

Note that both tests take 523 seconds, because the B+ is a single-core processor, there is no improvement for having 4 threads vs 1 (all 4 threads are one one processor)

In comparison, the Pi 2 at 900 MHz has for a single thread:

Running the test with following options:
Number of threads: 1

Doing CPU performance benchmark

Threads started!
Done.

Maximum prime number checked in CPU test: 10000


Test execution summary:
    total time:                          298.6816s
    total number of events:              10000
    total time taken by event execution: 298.6632
    per-request statistics:
         min:                                 29.64ms
         avg:                                 29.87ms
         max:                                 44.60ms
         approx.  95 percentile:              32.14ms

Threads fairness:
    events (avg/stddev):           10000.0000/0.00
    execution time (avg/stddev):   298.6632/0.00

298 seconds vs 523 for a single thread, so even without taking advantage of multicore, there's a 523/298 = 75% increase. That's nearly double just by having a ARMv7 doing the computation

If running with 4 threads, one on each processor, we see another big improvement

Number of threads: 4

Doing CPU performance benchmark

Threads started!
Done.

Maximum prime number checked in CPU test: 10000


Test execution summary:
    total time:                          76.1168s
    total number of events:              10000
    total time taken by event execution: 304.4156
    per-request statistics:
         min:                                 29.65ms
         avg:                                 30.44ms
         max:                                 63.32ms
         approx.  95 percentile:              34.97ms

Threads fairness:
    events (avg/stddev):           2500.0000/7.38
    execution time (avg/stddev):   76.1039/0.01

because we could split the work over 4 cores, we sped up 4x to 76 seconds.

Compared to a model B+, the Pi 2 is at most 7x faster when using multi-threaded/core computation!

Web performance (Compared to Pi B+)

When using the Pi 2 for desktop use such as running Scratch, minecraft, or web-browsing, it feels much faster. But, that's pretty subjective and we wanted to have some Real Numbers for comparison so we ran a few web-browser Javascript tests.

Javascript is fairly processor-intensive and runs a huge amount of the interactivity of websites, so speedy Javascript will translate directly to speedy browsing!

The first test we did is called Octane, you can run it by visiting here - it runs in your webbrowser and does a series of tests.

On a B+, we actually couldn't get the test to finish without crashing, but before it crashed we got the following:

Compare to the Pi 2 which did at least finish and gave us these numbers:

Higher numbers are better in this case

You can tell that depending on the tests, the Pi 2 is at least 2x as fast, and in most cases is 4x as fast.

SunSpider (Compared to Pi B+)

Another test you can run is called SunSpider, it's also a Javascript benchmarker. Here's the results from running it on a B+

        ============================================
        RESULTS (means and 95% confidence intervals)
        --------------------------------------------
        Total:                  9477.4ms +/- 0.4%
        --------------------------------------------

          3d:                   1657.4ms +/- 0.9%
            cube:                552.5ms +/- 0.5%
            morph:               316.1ms +/- 0.7%
            raytrace:            788.8ms +/- 1.8%

          access:                482.1ms +/- 0.6%
            binary-trees:         80.6ms +/- 1.6%
            fannkuch:            203.0ms +/- 1.3%
            nbody:               133.7ms +/- 0.8%
            nsieve:               64.8ms +/- 3.2%

          bitops:                225.2ms +/- 0.3%
            3bit-bits-in-byte:    20.1ms +/- 1.1%
            bits-in-byte:         38.5ms +/- 2.4%
            bitwise-and:          51.1ms +/- 1.5%
            nsieve-bits:         115.5ms +/- 0.7%

          controlflow:            74.0ms +/- 1.2%
            recursive:            74.0ms +/- 1.2%

          crypto:                647.4ms +/- 2.9%
            aes:                 337.7ms +/- 2.0%
            md5:                 171.7ms +/- 5.4%
            sha1:                138.0ms +/- 3.6%

          date:                 1503.9ms +/- 0.6%
            format-tofte:        784.9ms +/- 0.8%
            format-xparb:        719.0ms +/- 0.8%

          math:                  431.4ms +/- 1.7%
            cordic:              104.7ms +/- 2.0%
            partial-sums:        238.2ms +/- 2.4%
            spectral-norm:        88.5ms +/- 2.6%

          regexp:                174.8ms +/- 1.2%
            dna:                 174.8ms +/- 1.2%

          string:               4281.2ms +/- 0.5%
            base64:              208.6ms +/- 1.6%
            fasta:               466.5ms +/- 3.7%
            tagcloud:            711.4ms +/- 0.9%
            unpack-code:        2436.8ms +/- 0.4%
            validate-input:      457.9ms +/- 0.9%

And running on a Pi 2:

============================================
RESULTS (means and 95% confidence intervals)
--------------------------------------------
Total:                 2476.9ms +/- 0.7%
--------------------------------------------

  3d:                   499.8ms +/- 2.6%
    cube:               141.7ms +/- 1.4%
    morph:              150.5ms +/- 6.1%
    raytrace:           207.6ms +/- 2.1%

  access:               190.6ms +/- 1.0%
    binary-trees:        24.8ms +/- 1.2%
    fannkuch:            90.8ms +/- 1.0%
    nbody:               48.1ms +/- 2.2%
    nsieve:              26.9ms +/- 3.9%

  bitops:               100.6ms +/- 1.3%
    3bit-bits-in-byte:    8.4ms +/- 4.4%
    bits-in-byte:        19.4ms +/- 1.9%
    bitwise-and:         25.8ms +/- 1.2%
    nsieve-bits:         47.0ms +/- 2.0%

  controlflow:           25.6ms +/- 3.0%
    recursive:           25.6ms +/- 3.0%

  crypto:               194.5ms +/- 1.3%
    aes:                 99.6ms +/- 0.7%
    md5:                 52.3ms +/- 4.2%
    sha1:                42.6ms +/- 0.9%

  date:                 303.5ms +/- 1.2%
    format-tofte:       154.4ms +/- 0.8%
    format-xparb:       149.1ms +/- 1.7%

  math:                 141.5ms +/- 1.0%
    cordic:              39.1ms +/- 1.0%
    partial-sums:        69.9ms +/- 1.0%
    spectral-norm:       32.5ms +/- 1.6%

  regexp:                90.0ms +/- 0.7%
    dna:                 90.0ms +/- 0.7%

  string:               930.8ms +/- 0.7%
    base64:              57.6ms +/- 1.0%
    fasta:              141.2ms +/- 0.7%
    tagcloud:           160.7ms +/- 0.6%
    unpack-code:        460.6ms +/- 1.0%
    validate-input:     110.7ms +/- 1.0%

In this case, lower numbers are better. Again, you can see that all tests are at least 2x faster on a Pi 2 vs a B+ and most are about 4x faster!

Other tests!

OK we'll be doing more tests, but one thing we did get going was playing around with emulators. Of course the Pi 2 is much speedier than the B+ and by overclocking to 900 MHz we could run pcsx (playstation 1 emulator) and Crash Bandicoot at full speed with HDMI audio! Simply download, build and run as per this tutorial.