diff --git a/duck/duck.c b/duck/duck.c
index c72638c9cdbf33a169c6272feb95a4f75f24f2a9..280eb9e4c44e6698c78d959312d884fe5604bc3a 100644
--- a/duck/duck.c
+++ b/duck/duck.c
@@ -91,6 +91,10 @@ int main(int argc, char **argv)
 		    shake(MOTOR_2, numnods, -90, 0, 250);
 		    i++;
 	       }
+	  } else if (strcmp(argv[i], "print") == 0) {
+	       if (argv[i+1]) {
+		    duck_write_text(argv[i+1]);
+	       }
 	  }
      }
      if (read_mode) {
diff --git a/libduck/libduck.c b/libduck/libduck.c
index cb4e3ece9d11d8cc2db3e1d63050024e54c7ff64..54c9caabb140c1436b5bc4872a9101d0daf8ffe0 100644
--- a/libduck/libduck.c
+++ b/libduck/libduck.c
@@ -88,6 +88,11 @@ int duck_set_velocity(int motor, int deg_per_sec, int ms)
      return duck_printf("v %d %d %d\n", motor, deg_per_sec, ms);
 }
 
+int duck_write_text(const char *str)
+{
+     return duck_printf("t %s\n", str);
+}
+
 void read_duck_to_stdout(void)
 {
      while (1) {
diff --git a/libduck/libduck.h b/libduck/libduck.h
index 68e17cbc11998d5a582fb4c3b132529114e33a5a..9ce01667bf2b107d35497b1a3b4a7de3b95fa6bf 100644
--- a/libduck/libduck.h
+++ b/libduck/libduck.h
@@ -16,6 +16,7 @@ void configure_duck(void);
 int duck_set_position(int motor, int angle);
 int duck_delay(int ms);
 int duck_set_velocity(int motor, int deg_per_sec, int ms);
+int duck_write_text(const char *str);
 void read_duck_to_stdout(void);
 void close_duck(void);