How to use COM port(DigiCDC) and DigiKeyboard libraries on Digispark at the same time?

I using Digispark ATtiny85 board, and i want to use DigiCDC and DigiKeyboard libraries at the same time, but when i try to upload my sketch:

#include <DigiKeyboard.h>
#include <DigiCDC.h>

void setup() {
}

void loop() {
}

I got an errors:

C:\Users\Win\AppData\Local\Temp\arduino\sketches\82AAC7549FA295944EE560F87EC2BE00\libraries\DigisparkCDC\DigiCDC.cpp.o: In function `usbFunctionSetup':
C:\Users\Win\AppData\Local\Arduino15\packages\digistump\hardware\avr\1.6.7\libraries\DigisparkCDC/DigiCDC.cpp:315: multiple definition of `usbFunctionSetup'
C:\Users\Win\AppData\Local\Temp\arduino\sketches\82AAC7549FA295944EE560F87EC2BE00\sketch\sketch_may15a.ino.cpp.o:C:\Users\Win\AppData\Local\Arduino15\packages\digistump\hardware\avr\1.6.7\libraries\DigisparkKeyboard/DigiKeyboard.h:220: first defined here
C:\Users\Win\AppData\Local\Temp\arduino\sketches\82AAC7549FA295944EE560F87EC2BE00\libraries\DigisparkCDC\osccal.c.o: In function `calibrateOscillator':
C:\Users\Win\AppData\Local\Arduino15\packages\digistump\hardware\avr\1.6.7\libraries\DigisparkCDC/osccal.c:26: multiple definition of `calibrateOscillator'
C:\Users\Win\AppData\Local\Temp\arduino\sketches\82AAC7549FA295944EE560F87EC2BE00\libraries\DigisparkKeyboard\osccal.c.o:C:\Users\Win\AppData\Local\Arduino15\packages\digistump\hardware\avr\1.6.7\libraries\DigisparkKeyboard/osccal.c:26: first defined here
C:\Users\Win\AppData\Local\Temp\arduino\sketches\82AAC7549FA295944EE560F87EC2BE00\libraries\DigisparkCDC\usbdrv.c.o: In function `usbSetInterrupt':
C:\Users\Win\AppData\Local\Arduino15\packages\digistump\hardware\avr\1.6.7\libraries\DigisparkCDC/usbdrv.c:247: multiple definition of `usbSetInterrupt'
C:\Users\Win\AppData\Local\Temp\arduino\sketches\82AAC7549FA295944EE560F87EC2BE00\libraries\DigisparkKeyboard\usbdrv.c.o:C:\Users\Win\AppData\Local\Arduino15\packages\digistump\hardware\avr\1.6.7\libraries\DigisparkKeyboard/usbdrv.c:246: first defined here
C:\Users\Win\AppData\Local\Temp\arduino\sketches\82AAC7549FA295944EE560F87EC2BE00\libraries\DigisparkCDC\usbdrv.c.o: In function `usbGenericSetInterrupt':
C:\Users\Win\AppData\Local\Arduino15\packages\digistump\hardware\avr\1.6.7\libraries\DigisparkCDC/usbdrv.c:222: multiple definition of `usbPoll'
C:\Users\Win\AppData\Local\Temp\arduino\sketches\82AAC7549FA295944EE560F87EC2BE00\libraries\DigisparkKeyboard\usbdrv.c.o:C:\Users\Win\AppData\Local\Arduino15\packages\digistump\hardware\avr\1.6.7\libraries\DigisparkKeyboard/usbdrv.c:246: first defined here
C:\Users\Win\AppData\Local\Temp\arduino\sketches\82AAC7549FA295944EE560F87EC2BE00\libraries\DigisparkCDC\usbdrv.c.o: In function `usbGenericSetInterrupt':
C:\Users\Win\AppData\Local\Arduino15\packages\digistump\hardware\avr\1.6.7\libraries\DigisparkCDC/usbdrv.c:222: multiple definition of `usbTxLen'
C:\Users\Win\AppData\Local\Temp\arduino\sketches\82AAC7549FA295944EE560F87EC2BE00\libraries\DigisparkKeyboard\usbdrv.c.o:C:\Users\Win\AppData\Local\Arduino15\packages\digistump\hardware\avr\1.6.7\libraries\DigisparkKeyboard/usbdrv.c:246: first defined here
C:\Users\Win\AppData\Local\Temp\arduino\sketches\82AAC7549FA295944EE560F87EC2BE00\libraries\DigisparkCDC\usbdrv.c.o: In function `usbGenericSetInterrupt':
C:\Users\Win\AppData\Local\Arduino15\packages\digistump\hardware\avr\1.6.7\libraries\DigisparkCDC/usbdrv.c:222: multiple definition of `usbDescriptorDevice'
C:\Users\Win\AppData\Local\Temp\arduino\sketches\82AAC7549FA295944EE560F87EC2BE00\libraries\DigisparkKeyboard\usbdrv.c.o:C:\Users\Win\AppData\Local\Arduino15\packages\digistump\hardware\avr\1.6.7\libraries\DigisparkKeyboard/usbdrv.c:246: first defined here
C:\Users\Win\AppData\Local\Temp\arduino\sketches\82AAC7549FA295944EE560F87EC2BE00\libraries\DigisparkCDC\usbdrv.c.o: In function `usbGenericSetInterrupt':
C:\Users\Win\AppData\Local\Arduino15\packages\digistump\hardware\avr\1.6.7\libraries\DigisparkCDC/usbdrv.c:222: multiple definition of `usbDescriptorString0'
C:\Users\Win\AppData\Local\Temp\arduino\sketches\82AAC7549FA295944EE560F87EC2BE00\libraries\DigisparkKeyboard\usbdrv.c.o:C:\Users\Win\AppData\Local\Arduino15\packages\digistump\hardware\avr\1.6.7\libraries\DigisparkKeyboard/usbdrv.c:246: first defined here
C:\Users\Win\AppData\Local\Temp\arduino\sketches\82AAC7549FA295944EE560F87EC2BE00\libraries\DigisparkCDC\usbdrv.c.o: In function `usbGenericSetInterrupt':
C:\Users\Win\AppData\Local\Arduino15\packages\digistump\hardware\avr\1.6.7\libraries\DigisparkCDC/usbdrv.c:222: multiple definition of `usbDescriptorStringVendor'
C:\Users\Win\AppData\Local\Temp\arduino\sketches\82AAC7549FA295944EE560F87EC2BE00\libraries\DigisparkKeyboard\usbdrv.c.o:C:\Users\Win\AppData\Local\Arduino15\packages\digistump\hardware\avr\1.6.7\libraries\DigisparkKeyboard/usbdrv.c:246: first defined here
C:\Users\Win\AppData\Local\Temp\arduino\sketches\82AAC7549FA295944EE560F87EC2BE00\libraries\DigisparkCDC\usbdrv.c.o: In function `usbGenericSetInterrupt':
C:\Users\Win\AppData\Local\Arduino15\packages\digistump\hardware\avr\1.6.7\libraries\DigisparkCDC/usbdrv.c:222: multiple definition of `usbDescriptorStringDevice'
C:\Users\Win\AppData\Local\Temp\arduino\sketches\82AAC7549FA295944EE560F87EC2BE00\libraries\DigisparkKeyboard\usbdrv.c.o:C:\Users\Win\AppData\Local\Arduino15\packages\digistump\hardware\avr\1.6.7\libraries\DigisparkKeyboard/usbdrv.c:246: first defined here
c:/users/win/appdata/local/arduino15/packages/arduino/tools/avr-gcc/4.8.1-arduino5/bin/../lib/gcc/avr/4.8.1/../../../../avr/bin/ld.exe: Warning: size of symbol `usbDescriptorStringDevice' changed from 16 in C:\Users\Win\AppData\Local\Temp\arduino\sketches\82AAC7549FA295944EE560F87EC2BE00\libraries\DigisparkKeyboard\usbdrv.c.o to 34 in C:\Users\Win\AppData\Local\Temp\arduino\sketches\82AAC7549FA295944EE560F87EC2BE00\libraries\DigisparkCDC\usbdrv.c.o
C:\Users\Win\AppData\Local\Temp\arduino\sketches\82AAC7549FA295944EE560F87EC2BE00\libraries\DigisparkCDC\usbdrv.c.o: In function `usbGenericSetInterrupt':
C:\Users\Win\AppData\Local\Arduino15\packages\digistump\hardware\avr\1.6.7\libraries\DigisparkCDC/usbdrv.c:222: multiple definition of `usbInit'
C:\Users\Win\AppData\Local\Temp\arduino\sketches\82AAC7549FA295944EE560F87EC2BE00\libraries\DigisparkKeyboard\usbdrv.c.o:C:\Users\Win\AppData\Local\Arduino15\packages\digistump\hardware\avr\1.6.7\libraries\DigisparkKeyboard/usbdrv.c:246: first defined here
C:\Users\Win\AppData\Local\Temp\arduino\sketches\82AAC7549FA295944EE560F87EC2BE00\libraries\DigisparkCDC\usbdrvasm.S.o: In function `__vector_2':
C:\Users\Win\AppData\Local\Arduino15\packages\digistump\hardware\avr\1.6.7\libraries\DigisparkCDC/usbdrvasm165.inc:41: multiple definition of `__vector_2'
C:\Users\Win\AppData\Local\Temp\arduino\sketches\82AAC7549FA295944EE560F87EC2BE00\libraries\DigisparkKeyboard\usbdrvasm.S.o:C:\Users\Win\AppData\Local\Arduino15\packages\digistump\hardware\avr\1.6.7\libraries\DigisparkKeyboard/usbdrvasm165.inc:41: first defined here
C:\Users\Win\AppData\Local\Temp\arduino\sketches\82AAC7549FA295944EE560F87EC2BE00\libraries\DigisparkCDC\usbdrvasm.S.o: In function `usbCrc16':
C:\Users\Win\AppData\Local\Arduino15\packages\digistump\hardware\avr\1.6.7\libraries\DigisparkCDC/usbdrvasm.S:234: multiple definition of `usbCrc16'
C:\Users\Win\AppData\Local\Temp\arduino\sketches\82AAC7549FA295944EE560F87EC2BE00\libraries\DigisparkKeyboard\usbdrvasm.S.o:C:\Users\Win\AppData\Local\Arduino15\packages\digistump\hardware\avr\1.6.7\libraries\DigisparkKeyboard/usbdrvasm.S:234: first defined here
C:\Users\Win\AppData\Local\Temp\arduino\sketches\82AAC7549FA295944EE560F87EC2BE00\libraries\DigisparkCDC\usbdrvasm.S.o: In function `usbCrc16Append':
C:\Users\Win\AppData\Local\Arduino15\packages\digistump\hardware\avr\1.6.7\libraries\DigisparkCDC/usbdrvasm.S:266: multiple definition of `usbCrc16Append'
C:\Users\Win\AppData\Local\Temp\arduino\sketches\82AAC7549FA295944EE560F87EC2BE00\libraries\DigisparkKeyboard\usbdrvasm.S.o:C:\Users\Win\AppData\Local\Arduino15\packages\digistump\hardware\avr\1.6.7\libraries\DigisparkKeyboard/usbdrvasm.S:266: first defined here
C:\Users\Win\AppData\Local\Temp\arduino\sketches\82AAC7549FA295944EE560F87EC2BE00\libraries\DigisparkCDC\usbdrvasm.S.o: In function `usbMeasureFrameLength':
C:\Users\Win\AppData\Local\Arduino15\packages\digistump\hardware\avr\1.6.7\libraries\DigisparkCDC/usbdrvasm.S:321: multiple definition of `usbMeasureFrameLength'
C:\Users\Win\AppData\Local\Temp\arduino\sketches\82AAC7549FA295944EE560F87EC2BE00\libraries\DigisparkKeyboard\usbdrvasm.S.o:C:\Users\Win\AppData\Local\Arduino15\packages\digistump\hardware\avr\1.6.7\libraries\DigisparkKeyboard/usbdrvasm.S:321: first defined here
collect2.exe: error: ld returned 1 exit status

exit status 1

Compilation error: exit status 1

Is there any way to fix it? I need DigiCDC library to use COM port and get data from PC.

No easy one. You could try to combine the two libraries but I don't know if the resources of the Tiny will will suffice for the needs you have then.

You might want to change to an ATmega32U4 based board which offers far more resources and allows to handle CDC and HID at the same time over USB.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.