From e12b82d362238b49d3b4b88ff7d7a1d7e618bac8 Mon Sep 17 00:00:00 2001
From: "fnargwibble@gmail.com"
 <fnargwibble@gmail.com@ef4ab9da-24cd-11de-8aaa-f3a34680c41f>
Date: Sat, 5 Oct 2013 16:44:48 +0000
Subject: [PATCH] show device name during flashing and change advice on hanging

---
 client/flash.c   |  9 +++++----
 client/flash.h   |  2 +-
 client/flasher.c | 14 ++++++++------
 3 files changed, 14 insertions(+), 11 deletions(-)

diff --git a/client/flash.c b/client/flash.c
index b59fff04..9f547915 100644
--- a/client/flash.c
+++ b/client/flash.c
@@ -306,7 +306,7 @@ static int get_proxmark_state(uint32_t *state)
 }
 
 // Enter the bootloader to be able to start flashing
-static int enter_bootloader(void)
+static int enter_bootloader(char *serial_port_name)
 {
 	uint32_t state;
 
@@ -340,7 +340,8 @@ static int enter_bootloader(void)
     msleep(100);
 		CloseProxmark();
 
-		fprintf(stderr,"Waiting for Proxmark to reappear on USB...");
+		fprintf(stderr,"Waiting for Proxmark to reappear on ");
+		fprintf(stderr,serial_port_name);
     do {
 			sleep(1);
 			fprintf(stderr, ".");
@@ -366,11 +367,11 @@ static int wait_for_ack(void)
 }
 
 // Go into flashing mode
-int flash_start_flashing(int enable_bl_writes)
+int flash_start_flashing(int enable_bl_writes,char *serial_port_name)
 {
 	uint32_t state;
 
-	if (enter_bootloader() < 0)
+	if (enter_bootloader(serial_port_name) < 0)
 		return -1;
 
 	if (get_proxmark_state(&state) < 0)
diff --git a/client/flash.h b/client/flash.h
index d5f47b9d..3e9f77a7 100644
--- a/client/flash.h
+++ b/client/flash.h
@@ -26,7 +26,7 @@ typedef struct {
 } flash_file_t;
 
 int flash_load(flash_file_t *ctx, const char *name, int can_write_bl);
-int flash_start_flashing(int enable_bl_writes);
+int flash_start_flashing(int enable_bl_writes,char *serial_port_name);
 int flash_write(flash_file_t *ctx);
 void flash_free(flash_file_t *ctx);
 int flash_stop_flashing(void);
diff --git a/client/flasher.c b/client/flasher.c
index 46e1e57e..652f13b1 100644
--- a/client/flasher.c
+++ b/client/flasher.c
@@ -84,10 +84,11 @@ static void usage(char *argv0)
 	fprintf(stderr, "Usage:   %s <port> [-b] image.elf [image.elf...]\n\n", argv0);
 	fprintf(stderr, "\t-b\tEnable flashing of bootloader area (DANGEROUS)\n\n");
 	//Is the example below really true? /Martin
-	fprintf(stderr, "Example:\n\t %s path/to/osimage.elf path/to/fpgaimage.elf\n", argv0);
-	fprintf(stderr, "Example (Linux):\n\t %s  /dev/ttyACM0 armsrc/obj/fullimage.elf\n", argv0);
-	fprintf(stderr, "\nNote (Linux): if the flasher gets stuck in 'Waiting for Proxmark to reappear on USB', try deactivating modem-manager: 'sudo service modemmanager stop'\n\n");
-
+	fprintf(stderr, "Example:\n\n\t %s path/to/osimage.elf path/to/fpgaimage.elf\n", argv0);
+	fprintf(stderr, "\nExample (Linux):\n\n\t %s  /dev/ttyACM0 armsrc/obj/fullimage.elf\n", argv0);
+	fprintf(stderr, "\nNote (Linux): if the flasher gets stuck in 'Waiting for Proxmark to reappear on <DEVICE>',\n");
+	fprintf(stderr, "              you need to blacklist proxmark for modem-manager - see wiki for more details:\n");
+	fprintf(stderr, "              http://code.google.com/p/proxmark3/wiki/Linux\n\n");
 }
 
 #define MAX_FILES 4
@@ -127,14 +128,15 @@ int main(int argc, char **argv)
 
   serial_port_name = argv[1];
   
-  fprintf(stderr,"Waiting for Proxmark to appear on USB...");
+  fprintf(stderr,"Waiting for Proxmark to appear on ");
+  fprintf(stderr,serial_port_name);
   do {
     sleep(1);
     fprintf(stderr, ".");
   } while (!OpenProxmark(0));
   fprintf(stderr," Found.\n");
 
-	res = flash_start_flashing(can_write_bl);
+	res = flash_start_flashing(can_write_bl,serial_port_name);
 	if (res < 0)
 		return -1;
 
-- 
2.39.5