I powered-up the Joule and played around with its OS and did some basic programming tests. Everything went pretty smoothly, except for a few SW quirks that should be solved. First, I booted with the pre-installed Osto OS. In fact, it is a Yocto Linux intel-corei7-64 4.4.15-yocto-standard #1 SMP PREEMPT x86_64 GNU/Linux.

The startup process is straight forward. On Windows, install the FTDI drivers, plug in the micro-USB cable into your PC. Once the COM port is recognized, open Putty and use the settings shown in the pictures I’ve attached – there are few un-expected settings, so using all defaults will not work. The Joule boots relatively fast (~9. 8 s) and you can somehow follow the progress by looking at the LEDs on the board (see attached video). But even better – and since the root account logs-in automatically –, you can track the boot very early on the terminal. Now, of course, I would not let this happen in a deployment, but a message warns you any way that this is not a production image. The shipped GCC version is 5.4.0. I didn’t check for other dev tools since I am using only C/C++. But you should be able to install them as you would in any other Linux distro. At this point, you must bring-up the Wi-Fi interfaces.

This is because there are no wired networking interfaces on the Joule, so you must go thru the Wi-Fi (see attached pictures for some details). You can then either start working, business as usual or opt for a cross-platform development approach. This is when the issues started to pile up. I used the Intel System Studio IoT Edition. This is a cross-development/debugging tool running on top of Eclipse and uses Docker (be prepared for a lengthy installation). The first issue is that you must disable Hyper-V support (and reboot) because, in 64-bit, VirtualBox is incompatible! Really?! Then, be aware that if you change the default installation settings (and paths cannot contain spaces…), you will have to change manually your project’s settings… Quite disappointing. When I finally succeeded in set-up everything (took me a good hour and a half), I am still having problems to upload the binary to the Joule (because it is using a path that doesn’t exist because I changed the installation folder).

My issue is that I don’t know yet where the faulty options are set in the IDE. Well, I guess that this is part of the fun. Nonetheless, the UI is pretty cool and makes cross-development promising (once it is working). I’ve noticed that the projects to access sensors, gpios, etc are using the mraa library. When I re-built the lib from the latest sources, the CPU was pretty busy for a while, but it was still possible to touch the heatsink without experiencing pain (will take some measurements later on). The next step for me will be to code with the Joule and wait for the availability of the Windows 10 Core files from Microsoft, so I can switch.

"GCC Target: x86_64-ostro-linux. Configured with: ../gcc-5.4.0/configure build=x86_64-linux -host=x86_64-ostro-linux --target=x86_64-ostro-linux --prefix=/usr --exec_prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --libexecdir=/usr/libexec --datadir=/usr/share --sysconfdir=/etc --sharedstatedir=/com --localstatedir=/var --libdir=/usr/lib --includedir=/usr/include --oldincludedir=/usr/include --infodir=/usr/share/info --mandir=/usr/share/man --disable-silent-rules --disable-dependency-tracking --with-libtool-sysroot=/var/lib/jenkins/workspace/builder-slot-1/build/tmp-glibc/sysroots/intel-corei7-64 --with-gnu-ld --enable-shared --enable-languages=c,c++ --enable-threads=posix --enable-multilib --enable-c99 --enable-long-long --enable-symvers=gnu --enable-libstdcxx-pch --program-prefix=x86_64-ostro-linux -without-local-prefix --enable-lto --enable-libssp --enable-libitm --disable-bootstrap --disable-libmudflap --with-system-zlib --with-linker-hash-style=gnu --enable-linker-build-id --with-ppl=no --with-cloog=no --enable-checking=release --enable-cheaders=c_global --without-isl --with-sysroot=/ --with-build-sysroot=/var/lib/jenkins/workspace/builder-slot-1/build/tmp-glibc/sysroots/intel-corei7-64 --with-gxx-include-dir=/usr/include/c++/5.4.0 --without-long-double-128 --disable-static --enable-nls --enable__cxa_atexit. -
--Thread model: posix"
root@intel-corei7-64:~# mraa-gpio list
01 GPIO: GPIO
02 SPP1RX: GPIO SPI
03 PMICRST:
04 SPP1TX: GPIO SPI
05 19.2mhz: GPIO
06 SPP1FS0: GPIO SPI
07 UART0TX: UART
08 SPP1FS2: GPIO SPI
09 PWRGD:
10 SPP1CLK: GPIO SPI
11 I2C0SDA: I2C
12 I2S1SDI: GPIO
13 I2C0SCL: I2C
14 I2S1SDO: GPIO
15 I2C1SDA: I2C
16 I2S1WS: GPIO
17 I2C1SCL: I2C
18 I2S1CLK: GPIO
19 I2C2SDA: I2C
20 I2S1MCL: GPIO
21 I2C2SCL: I2C
22 UART1TX: UART
23 I2S4SDO:
24 UART1RX: UART
25 I2S4SDI:
26 PWM0: GPIO PWM
27 I2S4BLK: GPIO
28 PWM1: GPIO PWM
29 I2S4WS:
30 PWM2: GPIO PWM
31 I2S3SDO:
32 PWM3: GPIO PWM
33 I2S3SDI:
34 1.8V:
35 I2S4BLK: GPIO
36 GND:
37 GND:
38 GND:
39 GND:
40 3.3V:
41 GND:
42 5V:
43 GND:
44 5V:
45 GND:
46 3.3V:
47 GND:
48 3.3V:
49 GND:
50 1.8V:
51 GPIO: GPIO
52 1.8V:
53 PANEL: GPIO
54 GND:
55 PANEL: GPIO
56 CAMERA:
57 PANEL: GPIO
58 CAMERA:
59 SPP0FS0: GPIO SPI
60 CAMERA:
61 SPP0FS1: GPIO SPI
62 SPI_DAT:
63 SPP0FS2: GPIO SPI
64 SPICLKB: GPIO
65 SPP0FS3: GPIO SPI
66 SPICLKA: GPIO
67 SPP0TX: GPIO SPI
68 UART0RX: GPIO UART
69 SPP0RX: GPIO SPI
70 UART0RT: GPIO UART
71 I2C1SDA: GPIO I2C
72 UART0CT: GPIO UART
73 I2C1SCL: GPIO I2C
74 UART1TX: GPIO UART
75 I2C2SDA: GPIO I2C
76 UART1RX: GPIO UART
77 I2C1SCL: GPIO I2C
78 UART1RT: GPIO UART
79 RTC_CLK: GPIO
80 UART1CT: GPIO UART
100 LED100: GPIO
101 LED101: GPIO
102 LED102: GPIO
103 LED103: GPIO
104 LEDWIFI: GPIO
105 LEDBT: GPIO