diff --git a/.travis.yml b/.travis.yml
index db21eac997b8e40ed3392472a70e3dd900ea7386..1d82df66711fb6f46009654ecd5cf935d93b35a4 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,7 +1,4 @@
-dist: trusty
 language: rust
-services: docker
-sudo: required
 
 matrix:
   include:
@@ -9,12 +6,17 @@ matrix:
       rust: nightly
     - env: TARGET=thumbv7em-none-eabihf
       rust: nightly
+      addons:
+        apt:
+          sources:
+            - debian-sid
+          packages:
+            - binutils-arm-none-eabi
 
 before_install: set -e
 
 install:
-  - sh ci/install.sh
-  - source ~/.cargo/env || true
+  - bash ci/install.sh
 
 script:
   - bash ci/script.sh
diff --git a/ci/install.sh b/ci/install.sh
index 3b8d3a2edd3386556696278d8afc47a8f2c50b2f..1894bffe864dea064a1e1ed9ad088841073df5bb 100644
--- a/ci/install.sh
+++ b/ci/install.sh
@@ -1,18 +1,15 @@
-set -ex
+set -euxo pipefail
 
 main() {
-    local tag=$(git ls-remote --tags --refs --exit-code https://github.com/japaric/cross \
-                    | cut -d/ -f3 \
-                    | grep -E '^v0.1.[0-9]+$' \
-                    | sort --version-sort \
-                    | tail -n1)
+    if [ $TARGET = thumbv7m-none-eabi ]; then
+        local vers=0.3.7
 
-    curl -LSfs https://japaric.github.io/trust/install.sh | \
-        sh -s -- \
-           --force \
-           --git japaric/cross \
-           --tag $tag \
-           --target x86_64-unknown-linux-musl
+        cargo install --list | grep "xargo v$vers" || \
+            ( cd .. && cargo install xargo -f --vers $vers )
+
+        rustup component list | grep 'rust-src.*installed' || \
+            rustup component add rust-src
+    fi
 }
 
 main
diff --git a/ci/script.sh b/ci/script.sh
index 8532e55e34ccdf94e324c678bb897b33804ceea3..e6186b77fa7dc28747413907bec161b3919b22fd 100644
--- a/ci/script.sh
+++ b/ci/script.sh
@@ -1,8 +1,13 @@
 set -ex
 
 main() {
-    cross build --target $TARGET
-    cross build --target $TARGET --release
+    if [ $TARGET = x86_64-unknown-linux-gnu ]; then
+        cargo build --target $TARGET
+        return
+    fi
+
+    xargo build --target $TARGET
+    xargo test --target $TARGET --examples
 }
 
 main