diff --git a/communication protocol.txt b/communication protocol.txt
index c0d215ba725cc43f1956fbadd980868bb0bbfaf0..8ae74096d9439010f8575896154810b7d16e7ee6 100644
--- a/communication protocol.txt	
+++ b/communication protocol.txt	
@@ -6,10 +6,10 @@ Initialization (can be done again even after initialized, if needed):
 	Send 'k'
 
 Command protocol:
-	Send '!' - Other characters sent first will be rejected with reply 'C\r\n'
+	Send '!' - Other characters sent first will be rejected with reply 'C\n'
 	Send command and arguments (see below)
 	Lines replied starting with '#' are human-readable info messages that should be logged
-	All commands terminate by replying "no\n\r"
+	All commands terminate by replying "no\n"
 	
 Commands - single letter command with arguments in C scanf format :
 	ADC setting
@@ -37,9 +37,9 @@ Commands - single letter command with arguments in C scanf format :
 			Each point:
 				"B\n" followed by uint16 voltage and int32 current, then "\n"
 			End of each scan:
-				"S\n\r"
+				"S\n"
 			End of experiment:
-				"D\n\r"
+				"D\n"
 				
 	Square Wave Voltammetry
 		Send 'S'
@@ -51,9 +51,9 @@ Commands - single letter command with arguments in C scanf format :
 				"B\n" followed by uint16 voltage, int32 forward_current,
 				int32 reverse_current, then "\n"
 			End of each scan:
-				"S\n\r"
+				"S\n"
 			End of experiment:
-				"D\n\r"
+				"D\n"
 
 	Differential Pulse Voltammetry
 		Send 'S'
@@ -65,6 +65,6 @@ Commands - single letter command with arguments in C scanf format :
 				"B\n" followed by uint16 voltage, int32 forward_current,
 				int32 reverse_current, then "\n"
 			End of each scan:
-				"S\n\r"
+				"S\n"
 			End of experiment:
-				"D\n\r"
\ No newline at end of file
+				"D\n"
diff --git a/src/ads1255.c b/src/ads1255.c
index 3c92ba9575914de99e5dd029af3e26e198884aa6..377c913642f78c40c38c326bbf1bd06f6679d86f 100644
--- a/src/ads1255.c
+++ b/src/ads1255.c
@@ -53,7 +53,7 @@ void ads1255_reg_read(uint8_t address){
     usart_spi_deselect_device(&USARTE1, &spi_device_conf);
 	
 	for (int i=0;i<5;i++)
-		printf("ADS1255: Register %u=%.2x\n\r",i+1,input_buffer[i]);
+		printf("ADS1255: Register %u=%.2x\n",i+1,input_buffer[i]);
 	
 	return;
 }
@@ -65,8 +65,8 @@ void ads1255_reset(){
 	usart_spi_transmit(&USARTE1, ADS_RESET);
 	
 	#ifdef ADS1255_DBG
-	printf("ADS1255: Sending RESET\n\r");
-	printf("ADS1255: Waiting for calibration\n\r");
+	printf("ADS1255: Sending RESET\n");
+	printf("ADS1255: Waiting for calibration\n");
 	#endif
 	
 	while (arch_ioport_get_pin_level(IOPORT_CREATE_PIN(PORTD, 5)));
@@ -137,7 +137,7 @@ void ads1255_setup(uint8_t buff, uint8_t rate, uint8_t pga){
 		sample_delay_ms_100div = 25;
 		break;
 	default:
-		printf("#ERR: Invalid ADC data rate specified.\n\r");
+		printf("#ERR: Invalid ADC data rate specified.\n");
 		break;
 	}
 	
@@ -252,7 +252,7 @@ int16_t ads1255_read_fast_single(void){
 	ads1255_standby();
 	
 	#ifdef ADS1255_DBG
-	printf("ADS1255 result=%li\n\r", input_buffer.int16);
+	printf("ADS1255 result=%li\n", input_buffer.int16);
 	#endif
 	
 	return input_buffer.int16;
@@ -331,4 +331,4 @@ int32_t ads1255_read_single24(void){
 	
 	cpu_irq_restore(flags);
 	return input_buffer.int32;
-}
\ No newline at end of file
+}
diff --git a/src/eis_shield/ad5272.c b/src/eis_shield/ad5272.c
index 90887e2c08ca02cbd20f23ab49a6d613a73ea3ef..4c879a88cb7df258887876342fe801ca87b6c2a9 100644
--- a/src/eis_shield/ad5272.c
+++ b/src/eis_shield/ad5272.c
@@ -90,7 +90,7 @@ static void write(uint16_t input) {
     
     twi_master_write(&AD5272_TWI, &twi_pack);
     if(twi_master_write(&AD5272_TWI, &twi_pack) != TWI_SUCCESS)
-        printf("#ERR: AD5272 TWI write fail\r\n");
+        printf("#ERR: AD5272 TWI write fail\n");
     
     return;
 }
@@ -101,7 +101,7 @@ void ad5272_init(void) {
      */
     
     write(OP_WRITE_CTRL | CTRL_RDAC_WP);
-    printf("#INFO: AD5272: RDAC writes enabled\r\n");
+    printf("#INFO: AD5272: RDAC writes enabled\n");
 }
 
 void ad5272_write_rdac(uint16_t input) {
@@ -112,5 +112,5 @@ void ad5272_write_rdac(uint16_t input) {
      */
     input = OP_WRITE_RDAC | (input & DATA_MASK);
     write(input);
-//    printf("#DBG RDAC: %u\r\n", read(OP_READ_RDAC) & DATA_MASK);
+//    printf("#DBG RDAC: %u\n", read(OP_READ_RDAC) & DATA_MASK);
 }
diff --git a/src/eis_shield/ad5933.c b/src/eis_shield/ad5933.c
index 9a48e61756bca97f961f742f0d10692a22928a61..154941c39ec7046fc68b2e13f488b20596c56e78 100644
--- a/src/eis_shield/ad5933.c
+++ b/src/eis_shield/ad5933.c
@@ -158,7 +158,7 @@ static void read_block(uint8_t address, uint8_t length, uint8_t* buffer) {
     twi_pack.length = 0;
     
     if(twi_master_write(&EIS_TWI, &twi_pack) != TWI_SUCCESS)
-        printf("#ERR: AD5933 TWI write fail\r\n");
+        printf("#ERR: AD5933 TWI write fail\n");
     
     twi_pack.addr[0] = CTRL_BLK_READ;
     twi_pack.addr[1] = length;
@@ -189,7 +189,7 @@ static void write_byte(uint8_t address, uint8_t value) {
     
 
     if(twi_master_write(&EIS_TWI, &twi_pack) != TWI_SUCCESS)
-        printf("#ERR: AD5933 TWI write fail\r\n");
+        printf("#ERR: AD5933 TWI write fail\n");
 }
 
 static void write_block(uint8_t address, uint8_t length, uint8_t* buffer) {
@@ -210,7 +210,7 @@ static void write_block(uint8_t address, uint8_t length, uint8_t* buffer) {
     twi_pack.length = 0;
     
     if(twi_master_write(&EIS_TWI, &twi_pack) != TWI_SUCCESS)
-        printf("#ERR: AD5933 TWI write fail\r\n");
+        printf("#ERR: AD5933 TWI write fail\n");
     
     twi_pack.addr[0] = CTRL_BLK_WRITE;
     twi_pack.addr[1] = length;
@@ -265,7 +265,7 @@ void ad5933_set_internal_mclk(uint8_t internal) {
 
 static bool set_start_frequency(uint32_t start) {
     if (start > 0xFFFFFF) {
-        printf("#ERR: AD5933: Start frequency too high.\r\n");
+        printf("#ERR: AD5933: Start frequency too high.\n");
         return false;
     }
     
@@ -277,7 +277,7 @@ static bool set_start_frequency(uint32_t start) {
 
 static bool set_increment_frequency(uint32_t increment) {
     if (increment > 0xFFFFFF) {
-        printf("#ERR: AD5933: Increment too high.\r\n");
+        printf("#ERR: AD5933: Increment too high.\n");
         return false;
     }
 
@@ -289,7 +289,7 @@ static bool set_increment_frequency(uint32_t increment) {
 
 static bool set_num_increments(uint16_t num) {
     if (num > 511){
-        printf("#ERR: AD5933: Increment number too high.\r\n");
+        printf("#ERR: AD5933: Increment number too high.\n");
         return false;
     }
     
@@ -312,7 +312,7 @@ static bool set_settling_cycles(uint16_t cycles) {
         output = swap16((cycles >> 2) | 0b0000011000000000);
     }
     else {
-        printf("#ERR: AD5933: Settling cycles too high.\r\n");
+        printf("#ERR: AD5933: Settling cycles too high.\n");
         return false;
     }
     
@@ -411,7 +411,7 @@ cint16_t ad5933_measure_one(uint8_t measure_type) {
             break;
             
         default:
-            printf("#ERR: AD5933: Invalid frequency mode selected.\r\n");
+            printf("#ERR: AD5933: Invalid frequency mode selected.\n");
             data.real = 0;
             data.imag = 0;
             return data;
@@ -420,7 +420,7 @@ cint16_t ad5933_measure_one(uint8_t measure_type) {
     if ((read_byte(STATUS_REG) & STATUS_SWEEP_DONE) == STATUS_SWEEP_DONE) {
         data.real = 0;
         data.imag = 0;
-        printf("#INFO: AD5933: Reached end of sweep.\r\n");
+        printf("#INFO: AD5933: Reached end of sweep.\n");
         set_control_mode(CTRL_POWER_DOWN_MODE);
         return data;
     }
diff --git a/src/eis_shield/ds4550.c b/src/eis_shield/ds4550.c
index 3b060b0a8d2e0eac5ff320bebf61da6d408f550a..92707a3700392ff3285bf3c37b316e6150a610fd 100644
--- a/src/eis_shield/ds4550.c
+++ b/src/eis_shield/ds4550.c
@@ -101,7 +101,7 @@ static void write_block(uint8_t address, uint8_t length, uint8_t* buffer) {
     twi_pack.length = length;
     
     if(twi_master_write(&DS4550_TWI, &twi_pack) != TWI_SUCCESS)
-        printf("#ERR: DS4550: TWI write fail %hhu\r\n", length);
+        printf("#ERR: DS4550: TWI write fail %hhu\n", length);
 }
 
 void ds4550_set_pin(uint8_t pin, uint8_t state) {
@@ -151,11 +151,11 @@ void ds4550_set_eeprom(uint8_t on) {
     
     if (on) {
         write_byte(CONFIG, current & 0b11111110);  // LSB=0 is EEPROM enabled
-        printf("#INFO: DS4550: EEPROM enabled\r\n");
+        printf("#INFO: DS4550: EEPROM enabled\n");
     }
     else {
         write_byte(CONFIG, current | 0b00000001);  // LSB=1 is EEPROM disabled
-        printf("#INFO: DS4550: EEPROM disabled\r\n");
+        printf("#INFO: DS4550: EEPROM disabled\n");
     }
 }
 
diff --git a/src/eis_shield/eis_misc.c b/src/eis_shield/eis_misc.c
index 8812c570ba4b412ed0180f083743f8fa768a1884..09a4916b8f8cf7dbb2f9ef2f188772f92b05804b 100644
--- a/src/eis_shield/eis_misc.c
+++ b/src/eis_shield/eis_misc.c
@@ -24,38 +24,38 @@ void eis_set_gain(uint8_t gain){
     switch (gain) {
         case EIS_IV_GAIN_0:
             ds4550_set_pins(0b110000000, 0b111000000);
-            printf("#INFO: EIS gain 0\r\n");
+            printf("#INFO: EIS gain 0\n");
             break;
         case EIS_IV_GAIN_100:
             ds4550_set_pins(0b111000000, 0b111000000);
-            printf("#INFO: EIS gain 100\r\n");
+            printf("#INFO: EIS gain 100\n");
             break;
         case EIS_IV_GAIN_3k:
             ds4550_set_pins(0b101000000, 0b111000000);
-            printf("#INFO: EIS gain 3k\r\n");
+            printf("#INFO: EIS gain 3k\n");
             break;
         case EIS_IV_GAIN_30k:
             ds4550_set_pins(0b100000000, 0b111000000);
-            printf("#INFO: EIS gain 30k\r\n");
+            printf("#INFO: EIS gain 30k\n");
             break;
         case EIS_IV_GAIN_300k:
             ds4550_set_pins(0b011000000, 0b111000000);
-            printf("#INFO: EIS gain 300k\r\n");
+            printf("#INFO: EIS gain 300k\n");
             break;
         case EIS_IV_GAIN_3M:
             ds4550_set_pins(0b010000000, 0b111000000);
-            printf("#INFO: EIS gain 3M\r\n");
+            printf("#INFO: EIS gain 3M\n");
             break;
         case EIS_IV_GAIN_30M:
             ds4550_set_pins(0b001000000, 0b111000000);
-            printf("#INFO: EIS gain 30M\r\n");
+            printf("#INFO: EIS gain 30M\n");
             break;
         case EIS_IV_GAIN_100M:
             ds4550_set_pins(0b000000000, 0b111000000);
-            printf("#INFO: EIS gain 100M\r\n");
+            printf("#INFO: EIS gain 100M\n");
             break;
         default:
-            printf("#WAR: EIS: No gain provided\r\n");
+            printf("#WAR: EIS: No gain provided\n");
             break;
     }
     
@@ -73,23 +73,23 @@ void eis_set_ref(uint8_t ref){
     switch (ref) {
         case EIS_REF_CELL:
             ds4550_set_pins(0b000001101, 0b000111111);
-            printf("#INFO: EIS REF RE\r\n");
+            printf("#INFO: EIS REF RE\n");
             break;
         case EIS_REF_R1:
             ds4550_set_pins(0b000010110, 0b000111111);
-            printf("#INFO: EIS REF R1\r\n");
+            printf("#INFO: EIS REF R1\n");
             break;
         case EIS_REF_R2:
             ds4550_set_pins(0b000100110, 0b000111111);
-            printf("#INFO: EIS REF R2\r\n");
+            printf("#INFO: EIS REF R2\n");
             break;
         case EIS_REF_PARALLEL:
             ds4550_set_pins(0b000110110, 0b000111111);
-            printf("#INFO: EIS REF R1+2\r\n");
+            printf("#INFO: EIS REF R1+2\n");
             break;
             
         default:
-            printf("#WAR: EIS: No reference set.\r\n");
+            printf("#WAR: EIS: No reference set.\n");
             break;
     }
 
diff --git a/src/experiment.c b/src/experiment.c
index dc310e7ac092d74f372450550a30d367757b6e81..3b86ab7baed1854e1fe56db9cbacbe619f420f2e 100644
--- a/src/experiment.c
+++ b/src/experiment.c
@@ -81,13 +81,13 @@ void experiment_handler(char command){
     switch (command){
         case 'A': //ADS Buffer/rate/PGA values from ads1255.h
             scanf("%hhx%hhx%hhx",&o1,&o2,&o3);
-            printf("#A: %x %x %x\r\n",o1,o2,o3);
+            printf("#A: %x %x %x\n",o1,o2,o3);
             ads1255_setup(o1, o2, o3);
             break;
             
         case 'G': //Gain
             scanf("%u%hhu",&g_gain, &g_short);
-            printf("#G: %u %u\r\n", g_gain, g_short);
+            printf("#G: %u %u\n", g_gain, g_short);
             pot_set_gain(); //uses global g_gain, so no params
             break;
             
@@ -165,7 +165,7 @@ void experiment_handler(char command){
                     int32_t sum_imag = 0;
                     
                     for (uint8_t i = 0; i < 4; i++) {
-//                        printf("#IMP: %i \r\n", imp_avg[i].real);
+//                        printf("#IMP: %i \n", imp_avg[i].real);
                         sum_real += imp_avg[i].real;
                         sum_imag += imp_avg[i].imag;
                     }
@@ -176,12 +176,12 @@ void experiment_handler(char command){
                     result.imp.real = sum_real;
                     result.imp.imag = sum_imag;
                     
-                    printf("#IMP: %i + %ii\r\n", result.imp.real, result.imp.imag);
+                    printf("#IMP: %i + %ii\n", result.imp.real, result.imp.imag);
                     
                     if (result.imp.real != 0 && result.imp.imag != 0) {
                         printf("B\n");
                         udi_cdc_write_buf(&result, 6);
-                        printf("\r\n");
+                        printf("\n");
                         result.increment++;
                     }
                 }
@@ -203,7 +203,7 @@ void experiment_handler(char command){
             
         case 'R': //CA - steps, step_dac[], step_seconds[]
             scanf("%hhu",&p5); //get number of steps
-            printf("#INFO: Steps: %u\n\r", p5);
+            printf("#INFO: Steps: %u\n", p5);
             
             //allocate arrays for steps
             uint16_t * step_dac = malloc(p5*sizeof(uint16_t));
@@ -211,7 +211,7 @@ void experiment_handler(char command){
             
             //check for successful allocation
             if (!step_dac || !step_seconds){
-                printf("#ERR: Could not allocate memory\n\r");
+                printf("#ERR: Could not allocate memory\n");
                 break;
             }
             
@@ -219,36 +219,36 @@ void experiment_handler(char command){
             
             for (i=0; i<p5; i++){
                 scanf("%u", &step_dac[i]); // get voltage steps (dac units)
-                printf("#INFO: DAC: %u\n\r", step_dac[i]);
+                printf("#INFO: DAC: %u\n", step_dac[i]);
             }
             
             for (i=0; i<p5; i++){
                 scanf("%u", &step_seconds[i]); //get step durations (seconds)
-                printf("#INFO: Time: %u\n\r", step_seconds[i]);
+                printf("#INFO: Time: %u\n", step_seconds[i]);
             }
             
             scanf("%hhu", &o1);
-            printf("#INFO: TCS_check: %hhu\n\r", o1);
+            printf("#INFO: TCS_check: %hhu\n", o1);
             if (o1 > 0) {
                 if (settings.settings.tcs_enabled > 0){
                     tcs_readvalues(tcs_data);
                     tcs_readvalues(tcs_data1); // If sensor disconnected, second measurement should be exactly the same (unless 0 or saturated)
-                    printf("#INFO: TCS0—%u %u %u %u\n\r", tcs_data[0], tcs_data[1], tcs_data[2], tcs_data[3]);
-                    printf("#INFO: TCS1—%u %u %u %u\n\r", tcs_data1[0], tcs_data1[1], tcs_data1[2], tcs_data1[3]);
+                    printf("#INFO: TCS0—%u %u %u %u\n", tcs_data[0], tcs_data[1], tcs_data[2], tcs_data[3]);
+                    printf("#INFO: TCS1—%u %u %u %u\n", tcs_data1[0], tcs_data1[1], tcs_data1[2], tcs_data1[3]);
                     if (tcs_data[0] == tcs_data1[0]){
                         if (!(tcs_data[0] == 0 || tcs_data[0] == 65535)) {
-                            printf("#ERR: Ambient light sensor seems to be disconnected \n\r");
+                            printf("#ERR: Ambient light sensor seems to be disconnected \n");
                             return;
                         }
                     }
                     if (tcs_data[0] > settings.settings.tcs_clear_threshold){
-                        printf("#ERR: Ambient light exceeds threshold %u\n\r", tcs_data[0]);
-                        printf("#INFO: TCS—%u %u %u %u\n\r", tcs_data[0], tcs_data[1], tcs_data[2], tcs_data[3]);
+                        printf("#ERR: Ambient light exceeds threshold %u\n", tcs_data[0]);
+                        printf("#INFO: TCS—%u %u %u %u\n", tcs_data[0], tcs_data[1], tcs_data[2], tcs_data[3]);
                         return;
                     }
                 }
                 else {
-                    printf("#ERR: Ambient light sensor disabled.\n\r");
+                    printf("#ERR: Ambient light sensor disabled.\n");
                     return;
                 }
             }
@@ -279,7 +279,7 @@ void experiment_handler(char command){
             break;
             
         default:
-            printf("#ERR: Command %c not recognized\n\r", command);
+            printf("#ERR: Experiment command %c not recognized\n", command[0]);
     }
 }
 uint16_t set_timer_period(uint32_t period, volatile void *tc)
@@ -321,7 +321,7 @@ uint16_t set_timer_period(uint32_t period, volatile void *tc)
 		divider = 1024;
 	}
 	else{
-		printf("#Frequency/ADC rate is too low\n\r");
+		printf("#Frequency/ADC rate is too low\n");
 		return 0;
 	}
 	
@@ -360,49 +360,49 @@ void pot_set_gain(void){
 				ioport_set_port_level(IOPORT_PORTB, PIN6_bm|PIN7_bm, 0);
 				ioport_set_port_level(IOPORT_PORTD, PIN4_bm, 0);
 		
-				printf("#INFO: 500M\n\r");
+				printf("#INFO: 500M\n");
 				break;
 		
 			case POT_GAIN_30M:
 				ioport_set_port_level(IOPORT_PORTB, PIN6_bm|PIN7_bm, PIN6_bm);
 				ioport_set_port_level(IOPORT_PORTD, PIN4_bm, 0);
-				printf("#INFO: 30M\n\r");
+				printf("#INFO: 30M\n");
 				break;
 		
 			case POT_GAIN_3M:	
 				ioport_set_port_level(IOPORT_PORTB, PIN6_bm|PIN7_bm, PIN7_bm);
 				ioport_set_port_level(IOPORT_PORTD, PIN4_bm, 0);
-				printf("#INFO: 3M\n\r");
+				printf("#INFO: 3M\n");
 				break;
 		
 			case POT_GAIN_300k:
 				ioport_set_port_level(IOPORT_PORTB, PIN6_bm|PIN7_bm, PIN6_bm|PIN7_bm);
 				ioport_set_port_level(IOPORT_PORTD, PIN4_bm, 0);
-				printf("#INFO: 300k\n\r");
+				printf("#INFO: 300k\n");
 				break;
 		
 			case POT_GAIN_30k:
 				ioport_set_port_level(IOPORT_PORTB, PIN6_bm|PIN7_bm, 0);
 				ioport_set_port_level(IOPORT_PORTD, PIN4_bm, PIN4_bm);
-				printf("#INFO: 30k\n\r");
+				printf("#INFO: 30k\n");
 				break;
 		
 			case POT_GAIN_3k:
 				ioport_set_port_level(IOPORT_PORTB, PIN6_bm|PIN7_bm, PIN6_bm);
 				ioport_set_port_level(IOPORT_PORTD, PIN4_bm, PIN4_bm);
-				printf("#INFO: 3k\n\r");
+				printf("#INFO: 3k\n");
 				break;
 		
 			case POT_GAIN_300:
 				ioport_set_port_level(IOPORT_PORTB, PIN6_bm|PIN7_bm, PIN7_bm);
 				ioport_set_port_level(IOPORT_PORTD, PIN4_bm, PIN4_bm);
-				printf("#INFO: 300\n\r");
+				printf("#INFO: 300\n");
 				break;
 		
 			case POT_GAIN_100:
 				ioport_set_port_level(IOPORT_PORTB, PIN6_bm|PIN7_bm, PIN6_bm|PIN7_bm);
 				ioport_set_port_level(IOPORT_PORTD, PIN4_bm, PIN4_bm);
-				printf("#INFO: 100\n\r");
+				printf("#INFO: 100\n");
 				break;
 		#endif
 		
@@ -410,54 +410,54 @@ void pot_set_gain(void){
 			case POT_GAIN_100M:
 				ioport_set_port_level(IOPORT_PORTB, PIN6_bm|PIN7_bm, 0);
 				ioport_set_port_level(IOPORT_PORTD, PIN4_bm, 0);
-				printf("#INFO: 100M\n\r");
+				printf("#INFO: 100M\n");
 				break;
 				
 			case POT_GAIN_30M:
 				ioport_set_port_level(IOPORT_PORTB, PIN6_bm|PIN7_bm, PIN6_bm);
 				ioport_set_port_level(IOPORT_PORTD, PIN4_bm, 0);
-				printf("#INFO: 30M\n\r");
+				printf("#INFO: 30M\n");
 				break;
 				
 			case POT_GAIN_3M:
 				ioport_set_port_level(IOPORT_PORTB, PIN6_bm|PIN7_bm, PIN7_bm);
 				ioport_set_port_level(IOPORT_PORTD, PIN4_bm, 0);
-				printf("#INFO: 3M\n\r");
+				printf("#INFO: 3M\n");
 				break;
 				
 			case POT_GAIN_300k:
 				ioport_set_port_level(IOPORT_PORTB, PIN6_bm|PIN7_bm, PIN6_bm|PIN7_bm);
 				ioport_set_port_level(IOPORT_PORTD, PIN4_bm, 0);
-				printf("#INFO: 300k\n\r");
+				printf("#INFO: 300k\n");
 				break;
 				
 			case POT_GAIN_30k:
 				ioport_set_port_level(IOPORT_PORTB, PIN6_bm|PIN7_bm, 0);
 				ioport_set_port_level(IOPORT_PORTD, PIN4_bm, PIN4_bm);
-				printf("#INFO: 30k\n\r");
+				printf("#INFO: 30k\n");
 				break;
 				
 			case POT_GAIN_3k:
 				ioport_set_port_level(IOPORT_PORTB, PIN6_bm|PIN7_bm, PIN6_bm);
 				ioport_set_port_level(IOPORT_PORTD, PIN4_bm, PIN4_bm);
-				printf("#INFO: 3k\n\r");
+				printf("#INFO: 3k\n");
 				break;
 				
 			case POT_GAIN_0:
 				ioport_set_port_level(IOPORT_PORTB, PIN6_bm|PIN7_bm, PIN7_bm);
 				ioport_set_port_level(IOPORT_PORTD, PIN4_bm, PIN4_bm);
-				printf("#INFO: 0\n\r");
+				printf("#INFO: 0\n");
 				break;
 				
 			case POT_GAIN_100:
 				ioport_set_port_level(IOPORT_PORTB, PIN6_bm|PIN7_bm, PIN6_bm|PIN7_bm);
 				ioport_set_port_level(IOPORT_PORTD, PIN4_bm, PIN4_bm);
-				printf("#INFO: 100\n\r");
+				printf("#INFO: 100\n");
 				break;
 		#endif
 		
 			default:
-				printf("#WAR: Invalid pot gain.\n\r");
+				printf("#WAR: Invalid pot gain.\n");
 				break;
             
 		return;
@@ -544,13 +544,13 @@ void precond(int16_t v1, uint16_t t1, int16_t v2, uint16_t t2){ //assumes potent
 			if (udi_cdc_is_rx_ready()){
 				if (getchar() == 'a'){
 					precond_rtc_callback(t1);
-					printf("##ABORT\n\r");
+					printf("##ABORT\n");
 					goto aborting;
 				}
 			}
 			if (time_old != RTC.CNT){
 				time_old = RTC.CNT;
-				printf("#%u\n\r",time_old);
+				printf("#%u\n",time_old);
 			}
 		}
 	}
@@ -567,13 +567,13 @@ void precond(int16_t v1, uint16_t t1, int16_t v2, uint16_t t2){ //assumes potent
 			if (udi_cdc_is_rx_ready()){
 				if (getchar() == 'a'){
 					precond_rtc_callback(t2);
-					printf("##ABORT\n\r");
+					printf("##ABORT\n");
 					goto aborting;
 				}
 			}
 			if (time_old != RTC.CNT){
 				time_old = RTC.CNT;
-				printf("#%u\n\r",time_old);
+				printf("#%u\n",time_old);
 			}
 		}
 	}
@@ -602,7 +602,7 @@ void cv_experiment(int16_t v1, int16_t v2, int16_t start, uint8_t scans, uint16_
 	int8_t firstrun = 1;
 	
 	if((start < v1 && start < v2) || (start > v1 && start > v2)){
-		printf("#ERR: Start must be within [v1, v2]\n\r");
+		printf("#ERR: Start must be within [v1, v2]\n");
 		return;
 	}
 	
@@ -629,10 +629,10 @@ void cv_experiment(int16_t v1, int16_t v2, int16_t start, uint8_t scans, uint16_
 		--scans;
 		firstrun = 0;
         
-        printf("S\n\r"); //signal end of scan
+        printf("S\n"); //signal end of scan
 	}
 	
-	printf("D\n\r"); //signal end of experiment
+	printf("D\n"); //signal end of experiment
 	
 	return;
 }
@@ -652,7 +652,7 @@ uint8_t lsv_experiment(int16_t start, int16_t stop, uint16_t slope, int8_t first
 	//check experiment limits
 	if(start<-1500 || start>=1500 ||start==stop|| stop<-1500 || stop>=1500 || slope>7000)
 	{
-		printf("#ERR: Experiment parameters outside limits\n\r");
+		printf("#ERR: Experiment parameters outside limits\n");
 		return ret;
 	}
 	
@@ -705,7 +705,7 @@ uint8_t lsv_experiment(int16_t start, int16_t stop, uint16_t slope, int8_t first
 			timer_period /= 1024;
 		}
 		else{
-			printf("ERR: Frequency/ADC rate is too low\n\r");
+			printf("ERR: Frequency/ADC rate is too low\n");
 			return ret;
 		}
 		ads1255_wakeup();
@@ -855,7 +855,7 @@ void pot_experiment(uint16_t time_seconds, uint8_t exp_type){
 		if (udi_cdc_is_rx_ready()){
 			if (getchar() == 'a'){
 				ca_cca_callback();
-				printf("##ABORT\n\r");
+				printf("##ABORT\n");
 				goto aborting;
 			}
 		}
@@ -879,7 +879,7 @@ void pmt_idle(void){
     while (1){
         if (udi_cdc_is_rx_ready()){
             if (getchar() == 'a'){
-                printf("##ABORT\n\r");
+                printf("##ABORT\n");
                 // Doesn't disconnect control line to minimize time this is floating
                 return;
             }
@@ -927,13 +927,13 @@ void ca_experiment(uint16_t steps, uint16_t step_dac[], uint16_t step_seconds[])
 		tc_write_cc(&EXP_TC0_0, TC_CCA, EXP_TC0_0.CNT+step_seconds[i]-1);
 		RTC.CNT=0;
 		max5443_set_voltage1(step_dac[i]);
-		printf("#DAC: %u\n\r", step_dac[i]);
+		printf("#DAC: %u\n", step_dac[i]);
 		PORTD.INTCTRL = PORT_INT0LVL_LO_gc;
 		while (up !=0){
 			if (udi_cdc_is_rx_ready()){
 				if (getchar() == 'a'){
 					ca_cca_callback();
-					printf("##ABORT\n\r");
+					printf("##ABORT\n");
 					goto aborting;
 				}
 			}
@@ -1025,11 +1025,11 @@ void swv_experiment(int16_t start, int16_t stop, uint16_t step, uint16_t pulse_h
 				goto aborting;
 		}
 		
-		printf("S\n\r"); //signal end of scan
+		printf("S\n"); //signal end of scan
 		
 	} while (scans-- > 1); //will underflow after comparison for scans = 0 , but shouldn't matter 
 	
-	printf("D\n\r"); //signal end of experiment
+	printf("D\n"); //signal end of experiment
 	
 	aborting:
 		volt_exp_stop();
@@ -1185,7 +1185,7 @@ void dpv_experiment(int16_t start, int16_t stop, uint16_t step, uint16_t pulse_h
 	if (_dpv_singledir(dacindex_start, dacindex_stop, dacindex_pulse_height, dacindex_step, direction))
 		goto aborting; //function will return non-zero if abort called over USB
 	
-	printf("D\n\r"); //signal end of experiment
+	printf("D\n"); //signal end of experiment
 	
 	aborting:
 		volt_exp_stop();
diff --git a/src/ext_twi.c b/src/ext_twi.c
index ff0d0997c632b51d2e1571ca23713b7862d3940d..5c4274d8cc2c767c932cb709abb3c3decbddc4bd 100644
--- a/src/ext_twi.c
+++ b/src/ext_twi.c
@@ -26,5 +26,5 @@ void ext_twi_init(void){
     };
     
     twi_master_setup(&EXT_TWI0, &opt);
-    printf("#INFO: TWI master enabled\n\r");
+    printf("#INFO: TWI master enabled\n");
 }
diff --git a/src/main.c b/src/main.c
index a8936d89c9630ef513221e9d5ecce2979cf42143..53b1af77002921bb4c32e478f91e0472b5102e32 100644
--- a/src/main.c
+++ b/src/main.c
@@ -40,12 +40,12 @@ int8_t command_handler(char command){
         case 'T': ;
             uint16_t tcs_data[] = {0,0,0,0};
             if (settings.settings.tcs_enabled == 0){
-                printf("T-1.-1.-1.-1\n\r");
+                printf("T-1.-1.-1.-1\n");
             }
             else{
                 tcs_readvalues(tcs_data);
-                printf("#INFO: TCS—%u %u %u %u\n\r", tcs_data[0], tcs_data[1], tcs_data[2], tcs_data[3]);
-                printf("T%u.%u.%u.%u\n\r", tcs_data[0], tcs_data[1], tcs_data[2], tcs_data[3]);
+                printf("#INFO: TCS—%u %u %u %u\n", tcs_data[0], tcs_data[1], tcs_data[2], tcs_data[3]);
+                printf("T%u.%u.%u.%u\n", tcs_data[0], tcs_data[1], tcs_data[2], tcs_data[3]);
             }
             break;
         
@@ -56,12 +56,12 @@ int8_t command_handler(char command){
             break;
             
 		case 'V': //check version
-			printf("V%u.%u\n\r", BOARD_VER_MAJOR, BOARD_VER_MINOR);
+            printf("V%u.%u\n", BOARD_VER_MAJOR, BOARD_VER_MINOR);
 			break;
 		
 		default:
-			printf("#ERR: Command %c not recognized\n\r", command);
-			return 1;
+			printf("@ERR Command %c not recognized\n", command);
+			return;
 	}
 	printf("no\n\r");
 	return 0;
diff --git a/src/settings.c b/src/settings.c
index 50f48cfa0185c4a71bf4f0af2a6340bd7bc8136d..d2ee0645fd4b7a83b0b78f8ac3535acf9e3a02ac 100644
--- a/src/settings.c
+++ b/src/settings.c
@@ -48,7 +48,7 @@ void settings_handler(char command){
             break;
             
         default:
-            printf("#ERR: Command %c not recognized\n\r", command);
+            printf("@ERR: Command %c not recognized\n", command[0]);
     }
 }
 
@@ -66,25 +66,25 @@ void update_firmware(void){
 }
 
 void settings_read_eeprom(void){
-    printf("#INFO: SETTINGS\n\r");
+    printf("#INFO: SETTINGS\n");
     nvm_eeprom_read_buffer(SETTINGS_EEPROM_OFFSET_ADDR, &settings, EEPROM_PAGE_SIZE);
     if (settings.settings.programmed != 1) {
-        printf("#INFO: EEPROM not programmed\n\r");
+        printf("#INFO: EEPROM not programmed\n");
         settings_restore_defaults();
     }
-    printf("#INFO: max5443_offset = %u\n\r", settings.settings.max5443_offset);
-    printf("#INFO: tcs_enabled = %u\n\r", settings.settings.tcs_enabled);
-    printf("#INFO: tcs_clear_threshold = %u\n\r", settings.settings.tcs_clear_threshold);
-    printf("#INFO: r100_trim = %i\n\r", settings.settings.r100_trim);
-    printf("#INFO: r3k_trim = %i\n\r", settings.settings.r3k_trim);
-    printf("#INFO: r30k_trim = %i\n\r", settings.settings.r30k_trim);
-    printf("#INFO: r300k_trim = %i\n\r", settings.settings.r300k_trim);
-    printf("#INFO: r3M_trim = %i\n\r", settings.settings.r3M_trim);
-    printf("#INFO: r30M_trim = %i\n\r", settings.settings.r30M_trim);
-    printf("#INFO: r100M_trim = %i\n\r", settings.settings.r100M_trim);
-    printf("#INFO: eis_cal1 = %lu\n\r", settings.settings.eis_cal1);
-    printf("#INFO: eis_cal2 = %lu\n\r", settings.settings.eis_cal2);
-    printf("Smax5443_offset.%u:tcs_enabled.%u:tcs_clear_threshold.%u:r100_trim.%i:r3k_trim.%i:r30k_trim.%i:r300k_trim.%i:r3M_trim.%i:r30M_trim.%i:r100M_trim.%i:eit_cal1.%lu:eis_cal2.%lu\n\r",
+    printf("#INFO: max5443_offset = %u\n", settings.settings.max5443_offset);
+    printf("#INFO: tcs_enabled = %u\n", settings.settings.tcs_enabled);
+    printf("#INFO: tcs_clear_threshold = %u\n", settings.settings.tcs_clear_threshold);
+    printf("#INFO: r100_trim = %i\n", settings.settings.r100_trim);
+    printf("#INFO: r3k_trim = %i\n", settings.settings.r3k_trim);
+    printf("#INFO: r30k_trim = %i\n", settings.settings.r30k_trim);
+    printf("#INFO: r300k_trim = %i\n", settings.settings.r300k_trim);
+    printf("#INFO: r3M_trim = %i\n", settings.settings.r3M_trim);
+    printf("#INFO: r30M_trim = %i\n", settings.settings.r30M_trim);
+    printf("#INFO: r100M_trim = %i\n", settings.settings.r100M_trim);
+    printf("#INFO: eis_cal1 = %lu\n", settings.settings.eis_cal1);
+    printf("#INFO: eis_cal2 = %lu\n", settings.settings.eis_cal2);
+    printf("Smax5443_offset.%u:tcs_enabled.%u:tcs_clear_threshold.%u:r100_trim.%i:r3k_trim.%i:r30k_trim.%i:r300k_trim.%i:r3M_trim.%i:r30M_trim.%i:r100M_trim.%i:eit_cal1.%lu:eis_cal2.%lu\n",
            settings.settings.max5443_offset,
            settings.settings.tcs_enabled,
            settings.settings.tcs_clear_threshold,
@@ -105,7 +105,7 @@ void settings_write_eeprom(void){
 }
 
 void settings_restore_defaults(void){
-    printf("#INFO: Restoring EEPROM Defaults\n\r");
+    printf("#INFO: Restoring EEPROM Defaults\n");
     settings.settings.programmed = 1;
     settings.settings.max5443_offset = SETTINGS_MAX5443_OFFSET;
     settings.settings.tcs_enabled = SETTINGS_TCS_ENABLED;
diff --git a/src/shutter.c b/src/shutter.c
index 87ebea7529c2c1036d9ea81287c2d02fae935048..9ac05b44c128093eb7422077977daf9611f9ba3d 100644
--- a/src/shutter.c
+++ b/src/shutter.c
@@ -53,7 +53,7 @@ uint8_t shutter_cont(double freq){
             divider = 1024;
         }
         else{
-            printf("#ERR: Frequency/ADC rate is too low\n\r");
+            printf("#ERR: Frequency/ADC rate is too low\n");
             return 0;
         }