norns: update 220802

use SYSTEM > UPDATE while connected to the internet

if you have not yet fresh-installed norns: new image 220306, you will not be able to complete this update – maiden will alert you that a new image is necessary and you will see that your version number hasn’t changed on the SELECT / SYSTEM / SLEEP screen.


norns 2.7.2

documentation has been updated for the above changes.

new library: lfo

@dan_derks + @sixolet contributed a general-purpose lfo library which has helpful parameter integration. check out the documentation for more information.


mega call out of gratitude to @markeats + @Justmat for laying out a brilliant framework with their LFO libraries (changes and hnds, respectively), which was a massive help in filling out the maths and seeing the paths forward.

and i have so much appreciation for @sixolet for collaborating on the construction of the library through both code (using a single clock to drive all the LFO activity) and chats (so many rad idea swaps!!). be sure to check out her Your great aunt Pam's old toolkit and Mod Matrix for the Matrix Mod!!!.

just to show how the lfo library retrofits to an existing script, here’s an lfo-ified version of awake:

the code changes are outlined here.

in total, it’s about 25 lines to add 6 lfos (3 for the synth, 3 for patterns) with full parameter menu controls (for MIDI mapping and PSET saves)!

hopefully the docs linked above help guide folks, but if there are any questions just let us know!


super stoked on the lfo lib! this is going to be wonderfully useful :smiling_face_with_three_hearts: :smiling_face_with_three_hearts: :smiling_face_with_three_hearts:


I keep getting a “disk full. needs 400M” message.
I’ve never seen this before, and it’s a bit stranger now because after wiping the drive for the last update I’m guessing I’ve never had more free space. Any ideas?


1 Like

If you’re using a Shield, have you already expanded your SD card as described here?


Thanks. I have a factory Norns, and believe that I followed those instructions correctly when I updated (at least I tried too).

The Norns says I have around 290 megs available. I only have a handful of audio files loaded onto it… Not sure if that’s telling or not.

1 Like

sorry to hear about the trouble!

even if this is a 4gb norns, you should have about 1gb of free space after a clean install.
the extending storage info linked above should help – extending storage is applicable to both standard norns and shields, which i’ll make clearer in those docs!


I figured out that I had some mysterious Tape file that was over 250 megs. Deleted that and I was good to go. Sorry and thanks to you both!


Getting consistent client_loop: send disconnect: Connection reset errors when trying to ssh since recent update. Using defalt we/sleep user/pw. Has something changed?

nothing has changed with networking. did the uodate complete cleanly? is networking the only broken element?

1 Like

Everything else is fine. I think the issue is on my side tbh.

I’m trying to connect/work on norns from my fedora OS day job machine. Previously, I used a busted old windows machine for music/norns stuff and that worked fine. Now, I get lots of the these network errors and a lot of lag on the ssh connection :confused:

Edit: glitch in the matrix. All seems fine now :person_shrugging:

1 Like

Thank you for update! I am trying to get pset number but getting this error:
/home/we/dust/code/timber/player.lua:778: attempt to concatenate a nil value (local 'pset_number')
and I use this action:

params.action_read = function(filename, silent, pset_number)
    print("---- on pset loaded"..pset_number)

This is happening when I am reading pset from code:

local pset_file ="timber/player/player-01.pset"

When loading from menu it is printing pset number

ah! good that the callback is working as expected from the menu, thank you for the follow-up!

in thinking back on this feature, i remembered that it was implemented with the assumption that the most useful case where a script author would want the PSET number to get passed to their params.action_read function is when another (non-scripting) user of their script would load a PSET via the menu, which passes a numeric value for the loaded PSET slot to params:read, where it is wrapped up as the pset_number. this is the workflow that’s outlined in the extended reference: params | monome/docs

for scripting PSET reads (independent of the menu-based workflow), you should be able to get things groovin’ by using the alternative number argument outlined in the API, rather than the absolute path.

eg. params:read(1) should get your"timber/player/player-01.pset" PSET loaded and the pset_number sent back. this is of course assuming you’re scripting within the timber player script, rather than referencing PSETs for one script from another. if the latter is the case, and managing the awareness of the coded PSET reference from the code that’s calling the PSET doesn’t feel workable, then it’d be rad to learn a bit more about your use case! :sparkles:

hope this helps!


Thank you @dan_derks ! That make sense and I wasn’t aware that it should work as intended and I stored pset number globally so it works for me now. params:read(1) will simplify a lot, thanks for the tip!
In my use case I am trying to map midi button to switch to the next defined pset and I need to reset all samples by loading first pset first to clear all samples then load defined pset because of the timber bug that can’t sometimes properly load pset one after another.

I am also getting a lot of warnings with this update in Timber that wasn’t before and I can’t find initial logs because it keeps printing for couple seconds and erases old messages in Maiden:

! stealing separator ID <Amp Env> from earlier separator
! stealing separator ID <Mod Env> from earlier separator
! stealing separator ID <LFO Fade> from earlier separator
1 Like

ah, yes! these messages are benign (eg. won’t affect usability unless one tries to programmatically hide/show any of these colliding separators), but since all parameters now have ID’s (including separators and groups), these informational messages will print if a script does not differentiate separator IDs from one another – separators and groups now have IDs to facilitate hiding/showing in the params UI menu.

i’ll take a look at timber this week and push a PR to give each a unique ID.

a bit more has been documented about them here: params | monome/docs

1 Like

i would like to know whether this version can be running on Norns shield :sob:thanks a lot!

1 Like

yes, absolutely – all norns updates are for both standard units and shields, though you will need to make sure that you’re on version 220306 (which is 2022 March 6th) or later in order to perform the update. see this note for additional details:

let us know if you run into any trouble!


Thanks! a! lot! I’m a user in china it is hard for me to get the update by going system>update.I’m wondering is there has other methods to update my shield to 220802.谢谢!!! :heart:

Hello! There are instructions for offline updating here:

Hope that helps!


Today I’ve updated my norns shield to 220802 and now it won’t start up. :scream: The red and green lights are on while turning it on, but after a minute or so it’s only the red light and still nothing on the screen after half an hour. What to do?