diff --git a/tests/pyb/adc.py b/tests/pyb/adc.py
index 6508d7e24a1955c96b68d174747f1b379838e834..362ca326d22c516d52cf8989e2d437a22fbb778d 100644
--- a/tests/pyb/adc.py
+++ b/tests/pyb/adc.py
@@ -9,9 +9,12 @@ print(adc)
 val = adc.read()
 assert val < 500
 
+# timer for read_timed
+tim = pyb.Timer(5, freq=500)
+
 # read into bytearray
 buf = bytearray(50)
-adc.read_timed(buf, 500)
+adc.read_timed(buf, tim)
 print(len(buf))
 for i in buf:
     assert i < 500
@@ -19,12 +22,12 @@ for i in buf:
 # read into arrays with different element sizes
 import array
 ar = array.array('h', 25 * [0])
-adc.read_timed(ar, 500)
+adc.read_timed(ar, tim)
 print(len(ar))
 for i in buf:
     assert i < 500
 ar = array.array('i', 30 * [0])
-adc.read_timed(ar, 500)
+adc.read_timed(ar, tim)
 print(len(ar))
 for i in buf:
     assert i < 500
diff --git a/tests/pyb/can.py b/tests/pyb/can.py
index 594d1d509314da2f98b5bbd67d6d54c946e72cb4..617eb7ccccefaefa7c00cf9c673dcfb372b505af 100644
--- a/tests/pyb/can.py
+++ b/tests/pyb/can.py
@@ -1,4 +1,10 @@
-from pyb import CAN
+try:
+    from pyb import CAN
+except ImportError:
+    print('SKIP')
+    import sys
+    sys.exit()
+
 import pyb
 
 # test we can correctly create by id or name
diff --git a/tests/pyb/dac.py b/tests/pyb/dac.py
index 884ec582968c0f4bb94a3924e52f741690487062..942f303543472af9de8dfa08313c7cf6bb1e6f00 100644
--- a/tests/pyb/dac.py
+++ b/tests/pyb/dac.py
@@ -1,5 +1,10 @@
 import pyb
 
+if not hasattr(pyb, 'DAC'):
+    print('SKIP')
+    import sys
+    sys.exit()
+
 dac = pyb.DAC(1)
 print(dac)
 dac.noise(100)
diff --git a/tests/pyb/extint.py b/tests/pyb/extint.py
index a8ba484b1c6849d6e42838d203fb45435e4744a8..ae98ccd5a0de5efc6f38355b34bcf29112c26ceb 100644
--- a/tests/pyb/extint.py
+++ b/tests/pyb/extint.py
@@ -1,7 +1,7 @@
 import pyb
 
 # test basic functionality
-ext = pyb.ExtInt('X1', pyb.ExtInt.IRQ_RISING, pyb.Pin.PULL_DOWN, lambda l:print('line:', l))
+ext = pyb.ExtInt('Y1', pyb.ExtInt.IRQ_RISING, pyb.Pin.PULL_DOWN, lambda l:print('line:', l))
 ext.disable()
 ext.enable()
 print(ext.line())
diff --git a/tests/pyb/extint.py.exp b/tests/pyb/extint.py.exp
index daed01c7f6a7e048313a1a52dcf04403756e08c5..1f9da9844a081e3262f3ad5ececc5d82c9cff377 100644
--- a/tests/pyb/extint.py.exp
+++ b/tests/pyb/extint.py.exp
@@ -1,3 +1,3 @@
-0
-line: 0
-line: 0
+6
+line: 6
+line: 6
diff --git a/tests/pyb/pin.py b/tests/pyb/pin.py
index b3eb87b60809f38bc848b31d244626a63498b999..9b37883438f33bcce5aa9be3dbe097c5e00901ae 100644
--- a/tests/pyb/pin.py
+++ b/tests/pyb/pin.py
@@ -1,14 +1,14 @@
 from pyb import Pin
 
-p = Pin('X1', Pin.IN)
+p = Pin('Y1', Pin.IN)
 print(p)
 print(p.name())
 print(p.pin())
 print(p.port())
 
-p = Pin('X1', Pin.IN, Pin.PULL_UP)
-p = Pin('X1', Pin.IN, pull=Pin.PULL_UP)
-p = Pin('X1', mode=Pin.IN, pull=Pin.PULL_UP)
+p = Pin('Y1', Pin.IN, Pin.PULL_UP)
+p = Pin('Y1', Pin.IN, pull=Pin.PULL_UP)
+p = Pin('Y1', mode=Pin.IN, pull=Pin.PULL_UP)
 print(p)
 print(p.value())
 
diff --git a/tests/pyb/pin.py.exp b/tests/pyb/pin.py.exp
index 599374600a966a03cc45eb0ebac9238990dc3652..f2f7038fd44b5d47cdab853fc361c693384bb18b 100644
--- a/tests/pyb/pin.py.exp
+++ b/tests/pyb/pin.py.exp
@@ -1,10 +1,10 @@
-Pin(Pin.cpu.A0, mode=Pin.IN)
-A0
-0
-0
-Pin(Pin.cpu.A0, mode=Pin.IN, pull=Pin.PULL_UP)
+Pin(Pin.cpu.C6, mode=Pin.IN)
+C6
+6
+2
+Pin(Pin.cpu.C6, mode=Pin.IN, pull=Pin.PULL_UP)
 1
-Pin(Pin.cpu.A0, mode=Pin.IN, pull=Pin.PULL_DOWN)
+Pin(Pin.cpu.C6, mode=Pin.IN, pull=Pin.PULL_DOWN)
 0
 0
 1
diff --git a/tests/pyb/pyb1.py b/tests/pyb/pyb1.py
index 00adc855333d5b2e62b81e28dae4f9a1a223f710..184acbdc433f6b377eb2de11a5e3428f5e9601d6 100644
--- a/tests/pyb/pyb1.py
+++ b/tests/pyb/pyb1.py
@@ -27,14 +27,10 @@ print((pyb.millis() - start) // 5) # should print 3
 pyb.disable_irq()
 pyb.enable_irq()
 
-print(pyb.freq())
-
 print(pyb.have_cdc())
 
 pyb.hid((0, 0, 0, 0)) # won't do anything
 
-pyb.rng()
-
 pyb.sync()
 
 print(len(pyb.unique_id()))
diff --git a/tests/pyb/pyb1.py.exp b/tests/pyb/pyb1.py.exp
index 84034d683cdbd778bff03464d42b310433a7771a..5816ea967b3cbe8b3145d3bafb27518b8ff22ea8 100644
--- a/tests/pyb/pyb1.py.exp
+++ b/tests/pyb/pyb1.py.exp
@@ -1,5 +1,4 @@
 3
 3
-(168000000, 168000000, 42000000, 84000000)
 True
 12
diff --git a/tests/pyb/pyb_f405.py b/tests/pyb/pyb_f405.py
new file mode 100644
index 0000000000000000000000000000000000000000..3c81fe109df41456f783140192c4b22ac5add4a5
--- /dev/null
+++ b/tests/pyb/pyb_f405.py
@@ -0,0 +1,11 @@
+# test pyb module on F405 MCUs
+
+import os, pyb
+
+if not 'STM32F405' in os.uname().machine:
+    print('SKIP')
+    import sys
+    sys.exit()
+
+print(pyb.freq())
+print(type(pyb.rng()))
diff --git a/tests/pyb/pyb_f405.py.exp b/tests/pyb/pyb_f405.py.exp
new file mode 100644
index 0000000000000000000000000000000000000000..a90aa0268659e14adc0cb3c040a46bd515a82fa4
--- /dev/null
+++ b/tests/pyb/pyb_f405.py.exp
@@ -0,0 +1,2 @@
+(168000000, 168000000, 42000000, 84000000)
+<class 'int'>
diff --git a/tests/pyb/pyb_f411.py b/tests/pyb/pyb_f411.py
new file mode 100644
index 0000000000000000000000000000000000000000..3286539650eee13087c5e850ae2d9001fb5142d2
--- /dev/null
+++ b/tests/pyb/pyb_f411.py
@@ -0,0 +1,10 @@
+# test pyb module on F411 MCUs
+
+import os, pyb
+
+if not 'STM32F411' in os.uname().machine:
+    print('SKIP')
+    import sys
+    sys.exit()
+
+print(pyb.freq())
diff --git a/tests/pyb/pyb_f411.py.exp b/tests/pyb/pyb_f411.py.exp
new file mode 100644
index 0000000000000000000000000000000000000000..79e0a10621737f38557f0fda0cb494f99f7f1376
--- /dev/null
+++ b/tests/pyb/pyb_f411.py.exp
@@ -0,0 +1 @@
+(96000000, 96000000, 24000000, 48000000)
diff --git a/tests/pyb/rtc.py b/tests/pyb/rtc.py
index 300c95634212422601712a74a8ab664e76f7f6e0..844526b4b9683829545fba00dc93d458d4cc2e65 100644
--- a/tests/pyb/rtc.py
+++ b/tests/pyb/rtc.py
@@ -7,7 +7,7 @@ print(rtc)
 
 # make sure that 1 second passes correctly
 rtc.datetime((2014, 1, 1, 1, 0, 0, 0, 0))
-pyb.delay(1001)
+pyb.delay(1002)
 print(rtc.datetime()[:7])
 
 def set_and_print(datetime):