Hello guys, how do I transfer samples to DIY norns (shield)? On the micro sd I dont see these folders called tehn and so on. I just connect it via usb to computer? Cant check it at the moment - no cable :slight_smile:

check out the docs: https://monome.org/docs/norns/fileshare/

3 Likes

I attached an Anker Powercore 10000 battery to the underside with pedalboard velcro, and it turned out nicely.

20 Likes

Hi everyone! I’m new around here, and recently got to putting together a norns shield. However, I couldn’t find the stock Newhaven SSD1322 display as they were out of stock at all the usual areas and prohibitively expensive in others. In the meantime, I put together the rest of the board and stuck on a SSD1322, 256 x 64 screen just to see if anything would pop up.

To my pleasant surprise, it did work as expected (though everything is stretched out due to the width difference), except the text is mirrored vertically as shown:

Does anyone have any ideas if there’s a fix I can do in the system without compiling a new kernel, or is that my only option? I have tried messing about with dtoverlay, and looking into fbtft options but all I can see is to rebuild the entire kernel.

As a second question, I have a properly sized 128 x 64 screen around as well, but it is SSD1325… would it take a lot of work to rewrite/modify drivers for this and make it compatible? Would this also require building the kernel?

Any responses or suggestions would be appreciated, thank you very much! All the other hardware seems to be working fine, so the board is working as expected.

There’s rotation support in the dtoverlay for the display, which was added in this PR https://github.com/monome/linux/pull/41
See here for how to use it https://github.com/monome/linux/pull/40

2 Likes

Thank you for the suggestion! This was something I had tried, and it did rotate the screen, but the issue is that it’s flipped vertically, as if it’s a mirror image, and not just rotated. Changing the rotation settings just made it be upside down, but still flipped.

Wooooooo! I was sure that I was going to mess something up, but it booted up on the first try. This is my first soldering project.

I did slightly mess up SW3 by soldering it at a bit of an angle. I tried to undo it with a solder-sucker/wick but didn’t have any luck.

7 Likes

Ah, sorry, I missed that. AFAIK there’s no flip option for the display.

It looks like the ssd1325 driver is in the monome linux repo.

So perhaps you just need to make an overlay for that device.

So - you’d get the ssd1322 overlay and modify it for the ssd1325, save it to your home directory, and then recompile the dts with something like this:

sudo dtc -W no-unit_address_vs_reg -@ -I dts -O dtb -o /boot/overlays/ssd1325-spi-overlay.dtbo /home/we/ssd1325-spi-overlay.dts

Then change your /boot/config.txt to use that overlay instead of ssd1322


EDIT - although - it appears there’s no rotation option in the ssd1325 driver - so if you wanted rotation, you’d could attempt what I did with adding rotation to the ssd1322 driver, but then it turns into recompiling the linux kernel to get it working - which can be a huge hassle due to trying to make sure you have the proper header files for the particular linux version.

3 Likes

Thank you for the suggestion! I did follow the steps and unfortunately this did not allow for the screen to work. Fbset wouldn’t work at all.

I will look into attempting to compile a kernel to get this to work in the meantime, though my previous attempts haven’t been extremely successful.

Thanks again!

I am having a problem making me go mad… my norns shield emmits constant high pitched noise. It reacts on usage like browsing system etc. I notice this heavily since i attached my preamp, wich makes use of star grounding. Its not the pre tho as when feeding external signal its dead silent.

So i am not sure if this is common, being a computer down there but i need a solution nontheless. Tried usb wallplug aswell as power bank. It stays. Even with grid disconected

check and reheat you solders. usb batteries are best to avoid ground loops.

Fixed my isues with rewiring grounding and separating power rails. So there is still a small background beeeep in norns but i suppose thats to be expected and might be tamed with a proper psu, ideally pro audio usb powerbank. Just wanted to report back that norns wasnt the real issue here.

the small noise is probably bleed from the OLED driver clock/data lines.

Yup it starts with display and reacts on changes.
Nothing to minimize it?

not really. norns-shield is optimized for low cost and low part count. crosstalk rejection is one aspect in which factory norns is simply better, but this comes at the price of more expensive materials, a much more complex PCB, and the need to use CM3 instead of a standard Pi board for more flexible layout choices.

I ended up rewriting the driver and got it to work with ssd1325! I noticed that the makefile in the drivers-staging-fbtft folder in the linux bits repo for building a norns kernel had a typo that made the ssd1325 driver not work without fixing and recompiling the kernel.

Thanks to @okyeron and @simonvanderveldt for help and suggestions - especially @okyeron, whose ssd1322 rotation fix helped figure doing the same for the ssd1325.


Now I have a separate issue with the system not outputting audio after the system was updated, but I’ll mess around with the kernels a little more till I figure it out.

6 Likes


I got SSD1325 to work with a custom kernel after solving a few problem.

  1. The Makefile in the fbtft folder had a typo in in it. it is 1305 instead of 1325, that why the driver wasn’t compiled.

    obj-$(CONFIG_FB_TFT_SSD1289) += fb_ssd1289.o
    obj-$(CONFIG_FB_TFT_SSD1305) += fb_ssd1305.o
    obj-$(CONFIG_FB_TFT_SSD1306) += fb_ssd1306.o
    obj-$(CONFIG_FB_TFT_SSD1322) += fb_ssd1322.o
    obj-$(CONFIG_FB_TFT_SSD1305) += fb_ssd1325.o
    obj-$(CONFIG_FB_TFT_SSD1331) += fb_ssd1331.o

  2. There is no rotation and the boot sequence is wrong in the source code, so I made a small change to fix it.

    static int init_display(struct fbtft_par par)
    {
    par->fbtftops.reset(par);
    gpio_set_value(par->gpio.cs, 0);
    /
    Turn the display off. /
    write_reg(par, 0xAE);
    /
    Set the oscillator division. /
    write_reg(par, 0xb3);
    write_reg(par, 0xf1);
    /
    Set the multiplex ratio to 1/64 duty cycle. /
    write_reg(par, 0xa8);
    write_reg(par, 0x3f);
    /
    Set the display offset to 76. /
    write_reg(par, 0x81);
    write_reg(par, 0x4C);
    /
    Set the start line to 0. /
    write_reg(par, 0xa1);
    write_reg(par, 0x00);
    /
    Set Master Config to DC/DC Converter. /
    write_reg(par, 0xAD);
    write_reg(par, 0x02);
    /
    Set segment remap to 0x50:
    /* 1010000 (COM split, remap bottom-up, horiz. increment, no nibble remap)./
    write_reg(par, 0xa0);
    write_reg(par, 0x56); // 56 - 180 - 45/50 normal
    /
    Set full current range. /
    write_reg(par, 0x86);
    /
    Set the gray color palette. /
    /
    0x01, 0x11, 0x22, 0x32, 0x43, 0x54, 0x65, 0x76 /
    write_reg(par, 0x01);
    write_reg(par, 0x11);
    write_reg(par, 0x22);
    write_reg(par, 0x32);
    write_reg(par, 0x43);
    write_reg(par, 0x54);
    write_reg(par, 0x65);
    write_reg(par, 0x76);
    /
    Set the contrast to maximum. /
    write_reg(par, 0x81);
    write_reg(par, 0x7f);
    /
    Set the row period. /
    write_reg(par, 0xB2);
    write_reg(par, 0x51);
    /
    Set the phase length. /
    write_reg(par, 0xB1);
    write_reg(par, 0x55);
    /
    Set the precharge comparator to 2. /
    write_reg(par, 0xB4);
    write_reg(par, 0x02);
    /
    Enable the precharge comparator. /
    write_reg(par, 0xB0);
    write_reg(par, 0x28);
    /
    Set the high voltage level of the COM pin (0x1C = 0.80 * Vref). /
    write_reg(par, 0xBE);
    write_reg(par, 0x55);
    /
    Set the low voltage level of the SEG pin. Value may be wrong. /
    write_reg(par, 0xBF);
    write_reg(par, 0x02);
    /
    Set the display to non-inverted configuration. /
    write_reg(par, 0xA4);
    /
    turn Display on */
    write_reg(par, 0xAF);
    return 0;
    }

  3. I made a dts files from the SSD1322 version, just change all reference from 1322 to 1325, add ssd1325 to the overlay makefile, compile it and install the image and modules.

  4. modify boot/config.txt to SSD1325 and reboot.

Everything works fine except i need to reboot a few times just to get sound. not sure what is happening, any advise is appreciated.

*note I think I got it fixed. based on solution by @simonvanderveldt.

[edit] Sorry masking won’t work, you’ll have to move the unit

cd ~
sudo mv /etc/systemd/system/norns-sclang.service .

And then restart.

Once done move it back using

cd ~
sudo mv norns-sclang.service /etc/systemd/system/
3 Likes

first time poster long time lurker - I can’t seem to get encoder 2 and 3 to do anything. I purchased a pcb and populated it myself.anything I can do to provide more info?

1 Like

Maybe a picture of your assembled board, top and bottom… are you confident in your soldering skills? And do you have a multimeter?