diff --git a/src/containers/blocks.jsx b/src/containers/blocks.jsx
index 243dc1ea49fcc0c5b614dba0036299866b97d95a..56f2fa5d5fc7979f9f50fa1b0cdc9268596c7d7d 100644
--- a/src/containers/blocks.jsx
+++ b/src/containers/blocks.jsx
@@ -356,7 +356,8 @@ class Blocks extends React.Component {
                 deviceImage: extension.deviceImage,
                 smallDeviceImage: extension.smallDeviceImage,
                 name: extension.name,
-                connectingMessage: extension.connectingMessage
+                connectingMessage: extension.connectingMessage,
+                helpLink: extension.helpLink
             }});
         }
     }
@@ -423,6 +424,7 @@ class Blocks extends React.Component {
                         connectingMessage={this.state.connectionModal.connectingMessage}
                         deviceImage={this.state.connectionModal.deviceImage}
                         extensionId={this.state.connectionModal.extensionId}
+                        helpLink={this.state.connectionModal.helpLink}
                         name={this.state.connectionModal.name}
                         smallDeviceImage={this.state.connectionModal.smallDeviceImage}
                         vm={vm}
diff --git a/src/containers/connection-modal.jsx b/src/containers/connection-modal.jsx
index 4a285b1dbe64844b221b236b9529c1ec1911d80f..50862fbd2b31e6e830f756484fcd47e0fcbac0e8 100644
--- a/src/containers/connection-modal.jsx
+++ b/src/containers/connection-modal.jsx
@@ -12,7 +12,8 @@ class ConnectionModal extends React.Component {
             'handleConnected',
             'handleConnecting',
             'handleDisconnect',
-            'handleError'
+            'handleError',
+            'handleHelp'
         ]);
         this.state = {
             phase: PHASES.scanning
@@ -76,7 +77,7 @@ class ConnectionModal extends React.Component {
         });
     }
     handleHelp () {
-        // @todo: implement the help button
+        window.open(this.props.helpLink, '_blank');
     }
     render () {
         return (
@@ -104,6 +105,7 @@ ConnectionModal.propTypes = {
     connectingMessage: PropTypes.node.isRequired,
     deviceImage: PropTypes.string.isRequired,
     extensionId: PropTypes.string.isRequired,
+    helpLink: PropTypes.string.isRequired,
     name: PropTypes.node.isRequired,
     onCancel: PropTypes.func.isRequired,
     onStatusButtonUpdate: PropTypes.func.isRequired,
diff --git a/src/lib/libraries/extensions/index.jsx b/src/lib/libraries/extensions/index.jsx
index f81f9e46f9ea76bbc03f890fcee6e4b8f9fdf4d1..a45f35dcdfc17c506f40e25340d4e58b84c88175 100644
--- a/src/lib/libraries/extensions/index.jsx
+++ b/src/lib/libraries/extensions/index.jsx
@@ -136,7 +136,8 @@ export default [
                 description="Message to help people connect to their micro:bit."
                 id="gui.extension.microbit.connectingMessage"
             />
-        )
+        ),
+        helpLink: 'https://scratch.mit.edu/microbit'
     },
     {
         name: 'LEGO WeDo 2.0',
@@ -174,7 +175,8 @@ export default [
                 description="Message to help people connect to their EV3. Must note the PIN should be 1234."
                 id="gui.extension.ev3.connectingMessage"
             />
-        )
+        ),
+        helpLink: 'https://scratch.mit.edu/ev3'
     },
     {
         name: 'LEGO Boost',