Are you going to use the @okyeron code? And are you using a teensy? If so the addresses are defined on line 60-61 of the neotrellis_monome_teensy code. Use this address chart to find out what addresses to use:

Lots of good help/pointers here:

Hi all, when verifying the hex file in teensyduino (I have the same unique addresses as master and using teensy 3.2), I get a sea of error messages (am I doing something incredibly wrong here?):

Arduino: 1.8.13 (Mac OS X), TD: 1.53, Board: "Teensy 3.2 / 3.1, Serial, 120 MHz (overclock), Faster, US English"

sketch_oct11h:130: error: exponent has no digits
 :10080000EBB29A427FF64EAF94F81711C0B2814214
  ^
sketch_oct11h:236: error: exponent has no digits
 :100EA000284610220821FFF7F7FA304800F03EF9F3
  ^
sketch_oct11h:237: error: exponent has no digits
 :100EB00004F5F8752046FF2100F09EFD04F5F8705A
  ^
sketch_oct11h:238: error: exponent has no digits
 :100EC000FF217C3400F098FDAC42F3D100260127CD
  ^
sketch_oct11h:239: error: exponent has no digits
 :100ED0000024E5B22A46032331462448009700F057
  ^
sketch_oct11h:240: error: exponent has no digits
 :100EE00061F92A46022331462048009700F05AF95A
  ^
sketch_oct11h:241: error: exponent has no digits
 :100EF00001342A461E4B1D48314600F03DF9082CAE
  ^
sketch_oct11h:280: error: exponent has no digits
 :1011600001340028EBD170BD2A780136B242E3DCAD
  ^
sketch_oct11h:283: error: exponent has no digits
 :10119000030105EB800001EB820100EB810170BCD3
  ^
sketch_oct11h:294: error: exponent has no digits
 :10124000401003EB8000103000F066FB687801343A
  ^
sketch_oct11h:306: error: exponent has no digits
 :1013000006EB830205F80A0016D8F968D26B03F0E1
  ^
sketch_oct11h:307: error: exponent has no digits
 :101310000300204401EBA30372B19BF801E015F830
  ^
sketch_oct11h:394: error: exponent has no digits
 :101880000646ECE7F8B5FF29C1F38113C57F067F53
  ^
sketch_oct11h:410: error: exponent has no digits
 :1019800003EB8103120E1F443CBBD2B23A70077FB7
  ^
sketch_oct11h:492: error: exponent has no digits
 :101EA0000420DAE726698023B370D7E7BEF1000F7C
  ^
sketch_oct11h:493: error: exponent has no digits
 :101EB0000CBF02200320F6E7789EFF1F2DE9F041BA
  ^
sketch_oct11h:494: error: exponent has no digits
 :101EC00006690025122780F8385080F83950F770DD
  ^
sketch_oct11h:495: error: exponent has no digits
 :101ED000D0F810C09CF802E00EF0200E88B0044646
  ^
sketch_oct11h:496: error: exponent has no digits
 :101EE000884615461E46BEF1000F49D0B4238CF833
  ^
sketch_oct11h:497: error: exponent has no digits
 :101EF0000230784B21691A680092DDF800E006E0B4
  ^
sketch_oct11h:522: error: exponent has no digits
 :1020800004EB0E0291F8048082F818800EF1010E24
  ^
sketch_oct11h:612: error: exponent has no digits
 :1026200004ED00E089888888F8B52D4B2D49DFF846
  ^
sketch_oct11h:616: error: exponent has no digits
 :10266000086028234EF6FF71CCF80010CEF8003039
  ^
sketch_oct11h:650: error: exponent has no digits
 :10288000EDE70522EBE708300422E8E7094A52F8B1
  ^
sketch_oct11h:748: error: exponent has no digits
 :102EA0000080FF1F389FFF1FD49EFF1F289FFF1F1A
  ^
sketch_oct11h:749: error: exponent has no digits
 :102EB000609FFF1F58A1FF1F408F0000C4200740E4
  ^
sketch_oct11h:750: error: exponent has no digits
 :102EC000C8200740CC200740D0200740509FFF1F5C
  ^
sketch_oct11h:751: error: exponent has no digits
 :102ED000E49EFF1F909EFF1F94200740928892B9A6
  ^
sketch_oct11h:752: error: exponent has no digits
 :102EE000B14A0D784878157050708D78C878957013
  ^
sketch_oct11h:753: error: exponent has no digits
 :102EF000D07010680D79157186284D7989795571D2
  ^
sketch_oct11h:822: error: exponent has no digits
 :103340000EE72A78C9F8680001322A7038E52A7831
  ^
sketch_oct11h:868: error: exponent has no digits
 :1036200005211170002ED6D10198002389F80030B1
  ^
sketch_oct11h:900: error: exponent has no digits
 :103820004161816120601860EEE700BF889FFF1F43
  ^
sketch_oct11h:907: error: exponent has no digits
 :10389000EFE700BF789FFF1F7C9FFF1FFFF7DCBF94
  ^
sketch_oct11h:1004: error: exponent has no digits
 :103EA0001B6800220A7003B11A70164B3C22DA70AC
  ^
sketch_oct11h:1005: error: exponent has no digits
 :103EB000F0BC70474022D9795A7462B6E3E70B79B7
  ^
sketch_oct11h:1006: error: exponent has no digits
 :103EC0001C06E5D5164B174E1C783378E4B2DBB2EE
  ^
sketch_oct11h:1007: error: exponent has no digits
 :103ED0009C420ED0144D01E0A3420AD00133282B9E
  ^
sketch_oct11h:1008: error: exponent has no digits
 :103EE00028BF00230879E85CC0B2C871087D0728A4
  ^
sketch_oct11h:1009: error: exponent has no digits
 :103EF000F2D9DBB2034933700B79180644BF7C2337
  ^
/Users/lyndagoodman/Documents/Arduino/sketch_oct11h/sketch_oct11h.ino:1035:2: warning: integer constant is too large for its type
 :104090000000024007000240060002400800024003
  ^
sketch_oct11h:1042: error: exponent has no digits
 :10410000030382EA000083EA010180EA020281EAF5
  ^
sketch_oct11h:1046: error: exponent has no digits
 :1041400063EB430394EA050F00F0A780A4F1010498
  ^
sketch_oct11h:1049: error: exponent has no digits
 :104170000EE0A5F120050EF1200E012A03FA0EFC37
  ^
sketch_oct11h:1076: error: exponent has no digits
 :10432000024650EA013406BF52EA033591EA030F10
  ^
sketch_oct11h:1090: error: exponent has no digits
 :10440000033202EBDC02C2F1200300FA03FC20FAC3
  ^
sketch_oct11h:1110: error: exponent has no digits
 :1045400010EBD37021FA04F642EB06015EEA430E4B
  ^
sketch_oct11h:1115: error: exponent has no digits
 :104590004EEA020E20FA04F301FA05F243EA02039E
  ^
sketch_oct11h:1122: error: exponent has no digits
 :1046000094EA0C0F0CEA135518BF95EA0C0F0CD066
  ^
sketch_oct11h:1123: error: exponent has no digits
 :1046100050EA410618BF52EA4306D1D181EA0301AC
  ^
sketch_oct11h:1125: error: exponent has no digits
 :104630001046194652EA430619D094EA0C0F02D1EB
  ^
sketch_oct11h:1126: error: exponent has no digits
 :1046400050EA013613D195EA0C0F05D152EA033630
  ^
sketch_oct11h:1131: error: exponent has no digits
 :1046900095EA0C0F00F0A7F8A4EB050481EA030EDD
  ^
sketch_oct11h:1140: error: exponent has no digits
 :1047200040EA5C005B084FEA3202B6EB020E75EB22
  ^
sketch_oct11h:1143: error: exponent has no digits
 :1047500040EADC0055EA060E18D04FEA051545EA96
  ^
sketch_oct11h:1162: error: exponent has no digits
 :1048800091EA030F02BF90EA020F0020704710F177
  ^
sketch_oct11h:1260: error: exponent has no digits
 :104EA0005A603046E9608D6000F070F9B4E603F1B5
  ^
sketch_oct11h:1261: error: exponent has no digits
 :104EB0005C0E03F15B004FEA4E0307E69A0902F12C
  ^
sketch_oct11h:1262: error: exponent has no digits
 :104EC000390149003832A1E7BC424A4B3FF400AFF8
  ^
sketch_oct11h:1263: error: exponent has no digits
 :104ED0009C68626822F003025AE759F8083999453C
  ^
sketch_oct11h:1264: error: exponent has no digits
 :104EE00040F0828010F0030F00F1FF30F5D17B68B5
  ^
sketch_oct11h:1265: error: exponent has no digits
 :104EF00023EA04037B6064009C423FF6BDAE002CB5
  ^
sketch_oct11h:1399: error: exponent has no digits
 :1057500063EA050362464FF00004A9E770B5002A2A
  ^
sketch_oct11h:1427: error: exponent has no digits
 :10591000EF7121F47F6121F00F01A1F58054B4F5FE
  ^
sketch_oct11h:1516: error: exponent has no digits
 :105EA000AE454FEA1341E6D87B6092450CF1040CF5
  ^
sketch_oct11h:1517: error: exponent has no digits
 :105EB000AFD8DDF80490B8F1000F0BDD59F8043CC1
  ^
sketch_oct11h:1518: error: exponent has no digits
 :105EC000A9F104091BB105E059F8043D13B9B8F173
  ^
sketch_oct11h:1519: error: exponent has no digits
 :105ED0000108F9D10098C0F8108003B0BDE8F08F38
  ^
sketch_oct11h:1520: error: exponent has no digits
 :105EE00012F003032DE9F041144607462ED10E4669
  ^
sketch_oct11h:1521: error: exponent has no digits
 :105EF000A4101CD0BD6C95B3E3074FF0000806D486
  ^
sketch_oct11h:1557: error: exponent has no digits
 :106130002343EFD8ED433D4425F0030504352C44BB
  ^
/Users/lyndagoodman/Documents/Arduino/sketch_oct11h/sketch_oct11h.ino:1586:2: warning: integer constant is too large for its type
 :106300008803230423049003230423042304230485
  ^
/Users/lyndagoodman/Documents/Arduino/sketch_oct11h/sketch_oct11h.ino:1589:2: warning: integer constant is too large for its type
 :106330000501050123042304230423042304230467
  ^
sketch_oct11h:1590: error: exponent has no digits
 :10634000230423042304230415018102230481026E
  ^
sketch_oct11h:1593: warning: floating constant exceeds range of 'float' 
 :1063700025032304230423042304230423042304E4
 ^
sketch_oct11h:1772: error: exponent has no digits
 :106EA0002146584601F0E4FC00287FF4C0AA259A48
  ^
sketch_oct11h:1773: error: exponent has no digits
 :106EB000249B0DF1C009E4E723AA09990A9801F07F
  ^
sketch_oct11h:1774: error: exponent has no digits
 :106EC000D7FC00287FF4B3AA9DF86F70259C0DF1C4
  ^
sketch_oct11h:1775: error: exponent has no digits
 :106ED000C009FFF7CDBB5E1E002E7FF748AF9C4B6D
  ^
sketch_oct11h:1776: error: exponent has no digits
 :106EE0000F93102E2CDDCDF834801027B046DDF83E
  ^
sketch_oct11h:1777: error: exponent has no digits
 :106EF00028B0099E06E0A8F11008B8F1100F09F1BA
  ^
sketch_oct11h:1796: error: exponent has no digits
 :1070200065EB4505BBF1000F8DF86F70FFF6A8AA60
  ^
sketch_oct11h:1830: error: exponent has no digits
 :10724000EBFB119B672B064640F07D82079BDA071C
  ^
sketch_oct11h:1846: error: exponent has no digits
 :1073400054EA05010E933FF413AC1746FFF79BB8C0
  ^
sketch_oct11h:1867: error: exponent has no digits
 :107490007EF4CDAF259C0DF1C009FFF7B5BB4021AF
  ^
sketch_oct11h:1879: error: exponent has no digits
 :107550007EF46DAF259C249B0DF1C0091299C9F8EA
  ^
sketch_oct11h:1895: error: exponent has no digits
 :1076500023EAE37330E623AA09990A9801F008F9AE
  ^
sketch_oct11h:1896: error: exponent has no digits
 :1076600000287EF4E4AE1D9B259C0DF1C009FAE4D0
  ^
sketch_oct11h:1908: error: exponent has no digits
 :10772000672223EAE3731192C6E5002B40F39880A9
  ^
sketch_oct11h:1910: error: exponent has no digits
 :1077400023EAE373B8E5119B472B7FF483AD079BD6
  ^
sketch_oct11h:1929: error: exponent has no digits
 :1078700005EB0B030D9323EAE3731DE501230D9341
  ^
sketch_oct11h:1940: error: exponent has no digits
 :1079200007EB040A0193B9F1000F39D00025BC46DA
  ^
sketch_oct11h:2028: error: exponent has no digits
 :107EA00008EB83031869FDF72BFFC0F12000029A4D
  ^
sketch_oct11h:2029: error: exponent has no digits
 :107EB000104410F01F0000F0F681C0F12003042BE5
  ^
sketch_oct11h:2030: error: exponent has no digits
 :107EC00040F3CA84059BC0F11C000344059313468C
  ^
sketch_oct11h:2031: error: exponent has no digits
 :107ED000034405440293059B002B05DD21461A4609
  ^
sketch_oct11h:2032: error: exponent has no digits
 :107EE0004846FEF74DF80446029B002B05DD41464F
  ^
sketch_oct11h:2033: error: exponent has no digits
 :107EF0001A464846FEF744F880460C9B002B40F09B
  ^
sketch_oct11h:2069: error: exponent has no digits
 :10813000694903EBC80353E902230020FCF79CFACA
  ^
sketch_oct11h:2091: error: exponent has no digits
 :108290008EAD8DE6109A002A00F0418203F233433E
  ^
sketch_oct11h:2133: error: exponent has no digits
 :108530000EAB4FF00208BBE51C460021C9F8441001
  ^
sketch_oct11h:2284: error: exponent has no digits
 :108EA00008A004401418FE4314C004401818FE43E0
  ^
sketch_oct11h:2285: error: exponent has no digits
 :108EB00018C004400410FE4304B004400810FE43F0
  ^
sketch_oct11h:2286: error: exponent has no digits
 :108EC00008B004401400FE43149004404C08FE43D4
  ^
sketch_oct11h:2287: error: exponent has no digits
 :108ED0004CA004400420FE4304D004402410FE4370
  ^
sketch_oct11h:2288: error: exponent has no digits
 :108EE00024B004402010FE4320B004402810FE436C
  ^
sketch_oct11h:2289: error: exponent has no digits
 :108EF00028B004402C10FE432CB004400020FE4358
  ^
/Users/lyndagoodman/Documents/Arduino/sketch_oct11h/sketch_oct11h.ino:2306:2: warning: integer constant is too large for its type
 :109000000101010101010101101010101010424274
  ^
/Users/lyndagoodman/Documents/Arduino/sketch_oct11h/sketch_oct11h.ino:2307:2: warning: integer constant is too large for its type
 :109010004242424202020202020202020202020230
  ^
/Users/lyndagoodman/Documents/Arduino/sketch_oct11h/sketch_oct11h.ino:2309:2: warning: integer constant is too large for its type
 :109030000000000000000000000000000000000030
  ^
/Users/lyndagoodman/Documents/Arduino/sketch_oct11h/sketch_oct11h.ino:2310:2: warning: integer constant is too large for its type
 :109040000000000000000000000000000000000020
  ^
/Users/lyndagoodman/Documents/Arduino/sketch_oct11h/sketch_oct11h.ino:2311:2: warning: integer constant is too large for its type
 :109050000000000000000000000000000000000010
  ^
/Users/lyndagoodman/Documents/Arduino/sketch_oct11h/sketch_oct11h.ino:2312:2: warning: integer constant is too large for its type
 :109060000000000000000000000000000000000000
  ^
sketch_oct11h:2314: warning: floating constant exceeds range of 'float' 
 :1090800000000000000000000000000000000000E0
 ^
sketch_oct11h:2324: error: exponent has no digits
 :109120000000901EC4BCD64200003426F56B0C43F0
  ^
sketch_oct11h:2342: error: invalid digit "9" in octal constant
 :04923C00F8B500BFC2
  ^
sketch_oct11h:2343: error: invalid digit "9" in octal constant
 :08924000B0F7FF7F0100000000
  ^
sketch_oct11h:2363: warning: floating constant exceeds range of 'float' 
 :1093780000000000000000000000000000000000E5
 ^
sketch_oct11h:2370: warning: floating constant exceeds range of 'float' 
 :1093E8000000000000000000000000000000000075
 ^
/Users/lyndagoodman/Documents/Arduino/sketch_oct11h/sketch_oct11h.ino:2372:2: warning: integer constant is too large for its type
 :109408000000000000000000000000000000000054
  ^
/Users/lyndagoodman/Documents/Arduino/sketch_oct11h/sketch_oct11h.ino:2373:2: warning: integer constant is too large for its type
 :109418000000000000000000000000000000000044
  ^
/Users/lyndagoodman/Documents/Arduino/sketch_oct11h/sketch_oct11h.ino:2393:2: warning: integer constant is too large for its type
 :109558000010010524010101042402060524060067
  ^
sketch_oct11h:2402: warning: floating constant exceeds range of 'float' 
 :1095E8000000000000000000000000000000000073
 ^
/Users/lyndagoodman/Documents/Arduino/sketch_oct11h/sketch_oct11h.ino:2404:2: warning: integer constant is too large for its type
 :109608000000000000000000000000000000000052
  ^
/Users/lyndagoodman/Documents/Arduino/sketch_oct11h/sketch_oct11h.ino:2405:2: warning: integer constant is too large for its type
 :109618000000000000000000000000000000000042
  ^
/Users/lyndagoodman/Documents/Arduino/sketch_oct11h/sketch_oct11h.ino:2406:2: warning: integer constant is too large for its type
 :109628000000000000000000000000000000000032
  ^
/Users/lyndagoodman/Documents/Arduino/sketch_oct11h/sketch_oct11h.ino:2407:2: warning: integer constant is too large for its type
 :109638000000000000000000000000000000000022
  ^
/Users/lyndagoodman/Documents/Arduino/sketch_oct11h/sketch_oct11h.ino:2408:2: warning: integer constant is too large for its type
 :109648000000000000000000010000000000000011
  ^
sketch_oct11h:2411: warning: floating constant exceeds range of 'float' 
 :1096780000000000000000000000000000000000E2
 ^
sketch_oct11h:2418: warning: floating constant exceeds range of 'float' 
 :1096E8000000000000000000000000000000000072
 ^
/Users/lyndagoodman/Documents/Arduino/sketch_oct11h/sketch_oct11h.ino:2420:2: warning: integer constant is too large for its type
 :109708000000000000000000000000000000000051
  ^
/Users/lyndagoodman/Documents/Arduino/sketch_oct11h/sketch_oct11h.ino:2421:2: warning: integer constant is too large for its type
 :109718000000000000000000000000000000000041
  ^
/Users/lyndagoodman/Documents/Arduino/sketch_oct11h/sketch_oct11h.ino:2422:2: warning: integer constant is too large for its type
 :109728000000000000000000000000000000000031
  ^
/Users/lyndagoodman/Documents/Arduino/sketch_oct11h/sketch_oct11h.ino:2423:2: warning: integer constant is too large for its type
 :109738000000000000000000000000000000000021
  ^
/Users/lyndagoodman/Documents/Arduino/sketch_oct11h/sketch_oct11h.ino:2424:2: warning: integer constant is too large for its type
 :109748000000000000000000000000000000000011
  ^
/Users/lyndagoodman/Documents/Arduino/sketch_oct11h/sketch_oct11h.ino:2425:2: warning: integer constant is too large for its type
 :109758000000000000000000000000000000000001
  ^
sketch_oct11h:2427: warning: floating constant exceeds range of 'float' 
 :1097780000000000000000000000000000000000E1
 ^
sketch_oct11h:2434: warning: floating constant exceeds range of 'float' 
 :1097E8000000000000000000000000000000000071
 ^
/Users/lyndagoodman/Documents/Arduino/sketch_oct11h/sketch_oct11h.ino:2436:2: warning: integer constant is too large for its type
 :109808000000000000000000000000000000000050
  ^
/Users/lyndagoodman/Documents/Arduino/sketch_oct11h/sketch_oct11h.ino:2437:2: warning: integer constant is too large for its type
 :109818000000000000000000000000000000000040
  ^
/Users/lyndagoodman/Documents/Arduino/sketch_oct11h/sketch_oct11h.ino:2438:2: warning: integer constant is too large for its type
 :109828000000000000000000000000000000000030
  ^
/Users/lyndagoodman/Documents/Arduino/sketch_oct11h/sketch_oct11h.ino:2439:2: warning: integer constant is too large for its type
 :109838000000000000000000000000000000000020
  ^
/Users/lyndagoodman/Documents/Arduino/sketch_oct11h/sketch_oct11h.ino:2440:2: warning: integer constant is too large for its type
 :109848000000000000000000000000000000000010
  ^
/Users/lyndagoodman/Documents/Arduino/sketch_oct11h/sketch_oct11h.ino:2441:2: warning: integer constant is too large for its type
 :109858000000000000000000000000000000000000
  ^
sketch_oct11h:2443: warning: floating constant exceeds range of 'float' 
 :1098780000000000000000000000000000000000E0
 ^
sketch_oct11h:2450: warning: floating constant exceeds range of 'float' 
 :1098E8000000000000000000000000000000000070
 ^
sketch_oct11h:2458: error: exponent has no digits
 :1099680000000000000000000000000000000000EF
  ^
sketch_oct11h:2542: error: exponent has no digits
 :109EA8007893FF1F7893FF1F8093FF1F8093FF1FF6
  ^
sketch_oct11h:2543: error: exponent has no digits
 :109EB8008893FF1F8893FF1F9093FF1F9093FF1FA6
  ^
sketch_oct11h:2544: error: exponent has no digits
 :109EC8009893FF1F9893FF1FA093FF1FA093FF1F56
  ^
sketch_oct11h:2545: error: exponent has no digits
 :109ED800A893FF1FA893FF1FB093FF1FB093FF1F06
  ^
sketch_oct11h:2546: error: exponent has no digits
 :109EE800B893FF1FB893FF1FC093FF1FC093FF1FB6
  ^
sketch_oct11h:2547: error: exponent has no digits
 :109EF800C893FF1FC893FF1FD093FF1FD093FF1F66
  ^
sketch_oct11h:2552: error: invalid digit "9" in octal constant
 :089F480000000200FFFFFFFF13
  ^
sketch_oct11h: In function 'void setup()':
sketch_oct11h:2: error: expected primary-expression before ':' token
 :1000000000800020BD0100006D22000025220000BC
 ^
exponent has no digits


This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

Why are you verifying the hex?

You just load the hex file into the Teensy loader application. Verify some other sketch to get Teensy Loader to open and then just drag and drop the hex onto Teensy Loader.

Hi there, I am planning to connect my NeoTrellis grid to the Teletype (DIY).

I had a look at the Teletype sources yesterday, and if I understand it correctly, libavr32, which is used by the Teletype firmware to manage the Teletype’s USB port, checks whether the manufacturer string (not VID, which does not matter) is “monome”, and the USB serial number is starting with “m128-”. No further checks are done (I might have overlooked them).

Am I right to assume that the developers here had trouble to set manufacturer string and serial number on the Teensy from the arduino project, and that is why the workaround with the EEPROM programmable FTDI-breakout board (connected to RX1 and TX1 of the Teensy) was proposed?

Did someone try the approach described in the PJRC forum, which should allow to change the strings on the Teensy, by changing usb_desc.c and usb_desc.h in the Arduino-Teensy board definition? https://forum.pjrc.com/archive/index.php/t-23796.html (please note the last comment with regards to the serial number)

As an alternative, it would not seem difficult just to remove or change the serial number and manufacturer check from the libavr32, and then re-flash the Teletype (that is, in my eyes, it would not require so much code, as removal of code)

But maybe I overlooked a major hurdle? Is the issue really only the handshake, and the protocols are otherwise supposed to be 100% compatible, or is there more work to be done? I will continue to look into this issue in a few hours, grateful for any hints.

1 Like

The problem is NOT the manufacturer/product/serial strings. Those are already modified in the neotrellis Teesny code.

Yes - the underlying libraries (libavr32) do not know how to deal with CDC devices (ie Teensy devices). This is deeper in the USB communication code for device recognition and processing of serial data.

I have the hacked together some basic structure of adding this support to libavr32 (on meadowphysics), but actually making it work may be beyond my meager coding skill. I could really use some help here.

So… If you’re an experienced C coder and want to have a go at this I can try to bundle up my changes, along with various hints from here on lines, and pass that along

Could you please publish a link to the work you did? My time is unfortunately limited, but it definitely should be done.

I’ve not really had time to revisit this recently… but, I believe the WIP is here: https://github.com/okyeron/libavr32/tree/cdc-work

There’s also some hints here in the thread above as well. I may have some additional info from DMs but can’t seem to find it at the moment.

(Found the DMs with some additional info - but that’s probably best to be shared in DM or something as not to clog this thread)

EDIT - note that I do NOT have a Teletype so can’t really help at all with that specific implementation. The only monome euro module I have is Meadowphysics. (I believe) They use the same underlying libavr32 code, but there may be variations between code branches

1 Like

Thank you! On the other hand, Monome still recommends to power the Grid not via Teletype, but by an external power source, in order to reduce noise (older versions of Teletype wouldn’t even provide the necessary power). People seem to be using modded USB Y-cables for that, or active hubs. Which would actually be an argument for the approach to add a FTDI breakout as a dataport to the Grid - the Teensy port would then be used for power only. An FTDI breakout should not need additional code changes either on the Teensy side, nor on the Teletype side, besides changing the “Serial” calls to “Serial1”

If your Teletype does not have a black circuit board (which we started manufacturing in December 2018), it is not recommended to plug grid directly into Teletype’s USB port. The older models with green boards are not designed to supply enough power through USB, which won’t harm your equipment at all but it will reset the voltage regulator and cause instability. Our recommendation is to power the grid externally when plugging into Teletype, regardless of board color, as this also reduces the likelihood of noise. two > one was designed specifically for this purpose.

FWIW, it seems the NeoTrellis LED + driver boards are either very sensitive to handling, or have kind of iffy QC in some batches.

Out of 8 boards bought from Mouser, one was DOA with the first Neopixel in the chain going out on first test power on (which means none of the other LEDs work either, as they’re chained after that one). After joining the boards, it turned out another board has a single Neopixel with dead green LED - something that wasn’t obvious while testing the boards one by one, but very easy to spot with the final grid having 127 white LEDs and one purple one.

So now I’m running a yet caseless DIY 128 with a somewhat iffy bright purple color scheme, as the one cell with dead green LED sticks out sadly otherwise. Assuming that replacing a Neopixel or two on the board isn’t rocket science once I find out the part number, but still kind of irritating.

In any case, while waiting for an acrylic shim to get the buttons to correct height, and some free time to mill a case, I thought I’d try out the “compatibility” idea presented before: have a FT23x breakout programmed with the correct serial number do the actual USB communication, and let Teensy to control the grid & just use the actual serial port for communicating with the FTDI chip. Let’s see how that goes.

1 Like

Yes, I am that too. I connected the breakout to TX1, RX1 and GND of the Teensy, changed “Serial” objects in the Teensy INO to “Serial1”. I can receive key presses on the Grid using TeraTerm in Windows.

I programmed the FTDI to VID 0x0403 and PID 0x6001 (to satisfy uhi_ftdi.c in libavr32) , manufacturer string “monome” and serial string “m128-grid” (for monome.c in libavr32, b̴u̴t̴ ̴a̴n̴y̴ ̴"̴m̴"̴ ̴a̴t̴ ̴t̴h̴e̴ ̴b̴e̴g̴i̴n̴n̴i̴n̴g̴ ̴s̴h̴o̴u̴l̴d̴ ̴p̴r̴o̴b̴a̴b̴l̴y̴ ̴w̴o̴r̴k̴,̴ ̴t̴o̴o̴).

On connecting to the Teletype, both RX and TX LEDs on the breakout board activate, something is clearly happening, the RX and TX are lighting up according to key presses and LED changes in the metronome test script. But so far, no buttons light up, and the virtual grid also seems to be unaffected.

I guess I need to check what is actually transferred, and compare to what should be happening.

This may be incorrect. That would indicate series 128 device. See here

You want this to be a mext device, so a serial with m + numbers gets you there like m00000000

1 Like

I tried this 10 minutes before, but it was just freezing the Teletype completely (for as long as the USB was plugged in). Now it at least looks like communication is going on, even if the both sides do not understand each other. I admit that I have no idea about the differences in protocol between “m128” and “mext”, need to read more, after work.

Yeah, mext is the protocol that’s used in the most recent Monome Grids and this DIY version as well, so the serial should be m and 8 digits for the device to be recognized as what it is, in any case.

I don’t have a Euro setup anymore, so I’ll have to try out the end result with Norns - at the moment Fates, perhaps later an actual Monome unit as well. Of course, the “bare Teensy” version works trivially with Fates as it has a patch applied already, and easily with Norns by applying the patch… but I thought it’d be an interesting exercise, and as a plus would possibly enable me to use the same DIY grid with the modules later if I ever get back to modular.

Ok, so the two serial port solution is quite handy in that I can send debug data to my notebook via the regular port, and the actual responses to Teletype using the FTDI port. I guess it would be even better, if I’d enable debugging for the Teletype, too.

The Teletype is sending an endless streams of “0” messages, asking for device information, obviously unhappy with the answer (if it gets it). Does anybody know, why setup_mext() in the monome.c is expecting a six byte answer, while the Teensy seems to be sending three in processSerial()? Integer lengths? The message returned in itself seems to be correct 0x00 0x01 0x02

Here’s the spec:

https://monome.org/docs/serial.txt

I know the spec, but it seems to say 3 byte for the query response, while Teletype expects 6 - you can check it in setup_mext() / monome.c / libavr32. I just did some tests sending strings via Serial Port Monitor, and Teletype basically reacts to everything with endless 0s, until I send 00 01 02 00 00 00 at 57600 baud (!), then at least I get a 00 01 back, and the zeros stop (reliably). Now I need to check if the Grid will work at that baud rate.

YES! It works. The output is messed up on the Grid, but it clearly receives LED data by the Teletype. Probably again a byte count issue.

Video: https://drive.google.com/file/d/12LiOVbKfCTYZpRiDV_KnQsOovFZXJ9d6/view?usp=sharing

4 Likes

You’ll have to do “allow anyone with the link to view” deal in google drive. I want to see it!

1 Like

Try again, please

It seems like correct and wrong patterns alternate … they are the same patters all over, but they do not alternate in the same way.

Debug log here: https://drive.google.com/file/d/1ui8rsUAGuT8uJBZaqjnGjOnpfNrgAO3x/view?usp=sharing

grid_map_mext() in monome.c in libavr32 encodes in a different way, than case 0x1A in process_serial in MonomeSerialDevice.cpp on the Teensy decodes, this leads to a lot of wrong message calls, like after the first map, which stops at LED 119, there is again a 0x00 (setup), then three 0x04 (map offset?!), then three more 0x00, before the next map is sent.

In fact, the Teensy reads 3+64 bytes in process_serial / 0x1A (as per spec), but the Teletype sends only 3+32 bytes in libavr32 / monome.c / grid_map_next().

In other words, the Teletype does not follow the published spec, which is adhered to by the DIY Teensy code, neither in the initialization, where it expects 6 response bytes (twice the spec), nor for the map transmission, where it sends 32 bytes (half the spec) of intensity values.

Just to recapitulate, the changes I made:

  • flashed FTDI breakout with manufacture string “monome”, serial “m00000000”,VID=0403, PID=6001 using FTDI FT_PROG application (Windows)
  • using regular breakout for Debug, second breakout (FTDI) for data, connected to TX1, RX1, GND of Teensy.
  • Accordingly divided Arduino serial calls into Serial.write() for debug and Serial1.write() for data, changed speed for Serial1 to 57600
  • Changed reply to setup query 0x00 in process_serial to six bytes (in effect 00 01 02 00 00 00)
4 Likes

Keenly following along. Looks like some good progress is being made.