Mk debugging

Hello!!
Is there any way to flash my monome so it works with varibright as I’m using Norns a lot now and lots of the patches work with the grid but just no visual feedback
I have the monome 64 with logic board that says mk on there? I noticed there was an update from years ago on the old monome site which I downloaded but wondered if it was going to work first before potentially bricking the monome :wink:
http://archive.monome.org/community/discussion/18015/mk-firmware-update/p1.html
I can dim the leds on the monome test patch in 15 steps (I think it was) which show that the leds can work in this way doesnt it?
If it can be updated then I cant remember how to update via Terminal using avrdude as the wiki is down??
Loving Norns either way but want to use my grid with it bottom line :wink:
Dont mind editing the patches but no idea which section to edit to change the varibright to not be
Thanks

Short answer - you are stuck with the monobright grid. It can’t be made varibright in software/firmware.

1 Like

I’m looking at the code for awake
The grid responds to the presses but what am I editing to get the LED’s to work with the 64 grid?
From what I’m reading I need them to be 15 to light up???

function g.key(x, y, z)
local grid_h = g.rows
if z > 0 then
if (grid_h == 8 and edit_ch == 1) or (grid_h == 16 and y <= 8) then
if one.data[x] == 9-y then
set_loop_data(“one”, x, 0)
else
set_loop_data(“one”, x, 9-y)
end
end
if (grid_h == 8 and edit_ch == 2) or (grid_h == 16 and y > 8) then
if grid_h == 16 then y = y - 8 end
if two.data[x] == 9-y then
set_loop_data(“two”, x, 0)
else
set_loop_data(“two”, x, 9-y)
end
end
gridredraw()
redraw()
end
end

function gridredraw()
local grid_h = g.rows
g:all(0)
if edit_ch == 1 or grid_h == 16 then
for x = 1, 16 do
if one.data[x] > 0 then g:led(x, 9-one.data[x], 5) end
end
if one.pos > 0 and one.data[one.pos] > 0 then
g:led(one.pos, 9-one.data[one.pos], 15)
else
g:led(one.pos, 1, 3)
end
end
if edit_ch == 2 or grid_h == 16 then
local y_offset = 0
if grid_h == 16 then y_offset = 8 end
for x = 1, 16 do
if two.data[x] > 0 then g:led(x, 9-two.data[x] + y_offset, 5) end
end
if two.pos > 0 and two.data[two.pos] > 0 then
g:led(two.pos, 9-two.data[two.pos] + y_offset, 15)
else
g:led(two.pos, 1 + y_offset, 3)
end
end
g:refresh()
end

You’ll want to make your changes in the gridredraw function.

Look for any lines that are setting LED levels, g:led(x_coords, y_coords, led_level). I guess you’ll need to change any led_level values less than 15 to 15, and any values of 15 to 0. That will get you… somewhere, at any rate :smiley:

changed the setting on gridredraw g:led messages as below with no change or LEDs lighting up:

function gridredraw()
local grid_h = g.rows
g:all(0)
if edit_ch == 1 or grid_h == 16 then
for x = 1, 16 do
if one.data[x] > 0 then g:led(x, 15-one.data[x], 15) end
end
if one.pos > 0 and one.data[one.pos] > 0 then
g:led(one.pos, 15-one.data[one.pos], 0)
else
g:led(one.pos, 15, 15)
end
end
if edit_ch == 2 or grid_h == 16 then
local y_offset = 0
if grid_h == 16 then y_offset = 8 end
for x = 1, 16 do
if two.data[x] > 0 then g:led(x, 15-two.data[x] + y_offset, 15) end
end
if two.pos > 0 and two.data[two.pos] > 0 then
g:led(two.pos, 15-two.data[two.pos] + y_offset, 0)
else
g:led(two.pos, 15 + y_offset, 15)
end
end
g:refresh()
end

Just change the last number in the g:led calls to 15 or 0. It looks like you also changed some additional numbers in the calls.

for instance:
g:led(one.pos, 1, 3)
becomes…
g:led(one.pos, 1, 15)

The first and second arguments are for x/y coordinates, and should remain the same. (i edited my post above to express this more clearly.)

done this as suggested:
function gridredraw()
local grid_h = g.rows
g:all(0)
if edit_ch == 1 or grid_h == 16 then
for x = 1, 16 do
if one.data[x] > 0 then g:led(x, 9-one.data[x], 15) end
end
if one.pos > 0 and one.data[one.pos] > 0 then
g:led(one.pos, 9-one.data[one.pos], 0)
else
g:led(one.pos, 1, 15)
end
end
if edit_ch == 2 or grid_h == 16 then
local y_offset = 0
if grid_h == 16 then y_offset = 8 end
for x = 1, 16 do
if two.data[x] > 0 then g:led(x, 9-two.data[x] + y_offset, 15) end
end
if two.pos > 0 and two.data[two.pos] > 0 then
g:led(two.pos, 9-two.data[two.pos] + y_offset, 0)
else
g:led(two.pos, 1 + y_offset, 15)
end
end
g:refresh()
end

still nothing , no LEDs lighting up at all???
cant win
ive put the g:led messages in bold for ease on the post

something wrong here?
none of these 64 patches work at all?? tried the MLR and Otis ect
the button presses work but never any LED???

Are you certain that your grid leds are functional?

Maybe an issue with the mk board and Norns? Can you try one of the norns test scripts to ensure you can light the board? Ie make sure Norns itself can light the board, not just test patches on a laptop.

just done this! no LED’s on the tutorial scripts at all :frowning:
my LED’s defo work in general
i can get 1 LED to light up on the MLR patch somehow?? weird, i can also get all the LED’s to light up on the Grid test patch pressing K3 (start) but then they wont go off ever, the button presses respond tho everytime as can see the square light up on the Norns screen???
Also the leds do the startup flash when plugged in
not sure what to do now

Hey
I’ve been using Norns with my Grid (64 mk version) and all button presses work and register with the apps but no matter what I try I cannot get the LEDs to respond even using the script tutorials and editing the scripts to work with 64 grid?? Out ideas now
The grid does have a ISP/AVR programming header (and I do have an Olimex programmer) should i update the firmware released a while back to fix it
http://archive.monome.org/community/discussion/18015/mk-firmware-update/p1.html
Or is this an issue with MK boards and Norns???

Update to that firmware. This sounds about right:

mk update for varibright message translation. … mk does not support actual varibright. levels are translated to on/off at the mid-threshold level.

Can anyone remember how to flash using AVR dude? I have the cross pack installed but the wiki is old and doesn’t show up anymore from the archive monome site
Just so I dont have to solder headers onto the board as they aren’t on cos I’m sure you can do it via USB using the ttyserial type thing
Or failing that what’s the pinout for the mk board header?
Thanks
Sorry to be a pain

can’t get onto this anymore: http://docs.monome.org/doku.php?id=tech:mk:flash

moved this to a new thread as it went way off topic.

here’s the info you want:

try archive.org to get that dokuwiki page from 2013 or so

Thanks for this! Much appreciated!

This did indeed fix my issue! Works perfect with norns even without editing patches now :wink:
I also had a clash of the older ftdi driver running alongside serialosc which has now been deleted
:partying_face:

2 Likes

Currently trying to flash the firmware that had varibright fixes (from 6 years ago) onto my mk128. Can’t get atmel studio and my avr-isp mkii programmer to see the device. Stopped serialosc service. Used this same programmer, back around 2011 or 2012 to flash the device before. Would there be new win 10 services keeping me from having the mk board seen? Seem to remember that there used to be directions for using atmel studio, including fuse bits, but it’s been forever. Trying to use an mk128 and mk64 with my norns…(shield)

I do have a 2008 mac with something pre-catalina I can use if needed but no experience there.

Should be all good on win10 and atmel studio as that’s what I used
What version of Atmel studio you using?
You got correct pins on the board to the programmer? You powering via usb or via programmer?