diff --git a/dtdaq/__main__.py b/dtdaq/__main__.py
index 0ec7555bb9b39f80194a8cd005105321170f697e..d29ea265dca8d1edeb3bdd016450115885ac4b0f 100644
--- a/dtdaq/__main__.py
+++ b/dtdaq/__main__.py
@@ -6,7 +6,7 @@ import time
 import click
 import colorama
 
-from .dtdaq import DTDaq
+from . import dtdaq
 
 
 @click.command()
@@ -18,8 +18,13 @@ from .dtdaq import DTDaq
 def main(device, fsampl, channel, gain, filename):
     colorama.init()
 
-    daq = DTDaq(device.encode('ascii'))
-    print(f'{daq.name} {daq.version} 0x{daq.hwinfo.serial:X}')
+    try:
+        daq = dtdaq.DTDaq(device.encode('ascii'))
+        print(f'{daq.name} {daq.version} 0x{daq.hwinfo.serial:X}')
+    except dtdaq.DTDaqError as exc:
+        if exc.errno == dtdaq.errno.OLCANNOTOPENDRIVER:
+            return click.echo(f'Error: {exc.message}. Device "{device}" not found.', err=True)
+        raise
 
     if len(gain) == 1:
         gain = list(gain) * len(channel)
diff --git a/dtdaq/enumerate.py b/dtdaq/enumerate.py
index 761b95c867efd2a95d69fc3a0fa1e8aeb2381068..3fa4708962a4eaad31fd44986340ff1c8ff51466 100644
--- a/dtdaq/enumerate.py
+++ b/dtdaq/enumerate.py
@@ -1,11 +1,16 @@
 import click
-from .dtdaq import enum_boards
+from . import dtdaq
 
 
 @click.command()
 def main():
-    for board in enum_boards():
-        print(board.name)
+    try:
+        for board in dtdaq.enumerate_devices():
+            print(board.name)
+    except dtdaq.DTDaqError as exc:
+        if exc.errno == dtdaq.errno.OLNOBOARDSINSTALLED:
+            return print(f'{exc.message}.')
+        raise
 
 
 if __name__ == '__main__':