Skip to content

Conversation

relic-se
Copy link
Contributor

@relic-se relic-se commented Aug 5, 2025

The particular monitor I've been using with the Fruit Jam (an old Dell 1907FPt 4:3 monitor) doesn't support the default aspect ratio of Fruit Jam OS (720x400, 1.8:1).

I've introduced support for 4:3 aspect ratio (640x480) by adding an environment variable, FRUIT_JAM_OS_4x3, and some additional changes to positioning. I believe an environment variable is the best way to approach so that it is easier for users to maintain their device's settings between updates.

@RetiredWizard
Copy link
Contributor

RetiredWizard commented Aug 5, 2025

There was a PR merged into Circuitpython (adafruit/circuitpython#10534) which increased the number of displays that will work at 700x400. Have you tried running with the "absolute newest" firmware by any chance?

@relic-se
Copy link
Contributor Author

relic-se commented Aug 5, 2025

I'm running 10.0.0-beta.2. This is a fairly old display that I'm working with, and I just don't think it's compatible.

Adafruit CircuitPython 10.0.0-beta.2 on 2025-07-30; Adafruit Fruit Jam with rp2350b

Not that it's entirely relevant, but this is the prompt I get when using the 1.8:1 aspect ratio:
PXL_20250805_140250025

Copy link
Contributor

@FoamyGuy FoamyGuy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it's great to support 640x480 better with the layout, but we can do it using the existing display environment config vars instead of introducing a new one for the OS.

@RetiredWizard
Copy link
Contributor

RetiredWizard commented Aug 5, 2025

I'm running 10.0.0-beta.2. This is a fairly old display that I'm working with, and I just don't think it's compatible.

For what it's worth Google AI seems to think 720x400 will work on your monitor, but who knows 🤷. I did have the same problem on the monitor I was using, the "Absolute Newest" version from this page https://circuitpython.org/board/adafruit_fruit_jam/ got it working

@relic-se
Copy link
Contributor Author

relic-se commented Aug 5, 2025

For what it's worth Google AI seems to think 720x400 will work on your monitor, but who knows 🤷. I did have the same problem on the monitor I was using the the "Absolute Newest" version from this page https://circuitpython.org/board/adafruit_fruit_jam/ got it working

I don't think I'd trust Google AI on that one 😆.

I have an MSI MAG401QR ultrawide monitor that works well, but I think there's some appeal to getting the Fruit Jam working with older monitors. Although there's likely a better work around, I can imagine someone running it into composite/VGA adapter to output to an old CRT. While the widescreen aspect ratio would likely work, a standard aspect ratio might look clearer and less squashed on the x axis.

@RetiredWizard
Copy link
Contributor

(an old Dell 1907FPt 4:3 monitor)

It turns out I actually have a Dell 1908FP 4:3 monitor and when I run 10.0.0-beta 2 I get exactly the screen you've posted, however with the "Absolute Newest" firmware, Fruit Jam OS runs fine.

I'm not suggesting that this PR isn't helpful, just that you may have more options than you think.

@relic-se
Copy link
Contributor Author

relic-se commented Aug 5, 2025

It turns out I actually have a Dell 1908FP 4:3 monitor and when I run 10.0.0-beta 2 I get exactly the screen you've posted, however with the "Absolute Newest" firmware, Fruit Jam OS runs fine.

Oh wow, I didn't realize how recent that update was. I'll give it a try! I'm sure I'll find this out for myself soon, but how does it handle the aspect ratio? Does it stretch the image or does it add black borders to the top and bottom?

I'm not suggesting that this PR isn't helpful, just that you may have more options than you think.

Being the starting point for most users of the Fruit Jam, I think it's important to make it versatile. Thank you for your review/comments!

@RetiredWizard
Copy link
Contributor

but how does it handle the aspect ratio?

It adds the Black boarders (letter box) at the top and bottom.

@RetiredWizard
Copy link
Contributor

For some reason, entering Breakout and then pressing ctrl-c to exit results in the following error:

Traceback (most recent call last):
  File "/apps/Metro_RP2350_Breakout/code.py", line 530, in <module>
KeyboardInterrupt: 

Code done running.
soft reboot

Auto-reload is off.
code.py output:
Traceback (most recent call last):
  File "code.py", line 76, in <module>
AttributeError: 'NoneType' object has no attribute 'width'

supervisor.runtime.display is apparently returning "None" after the reload.

@RetiredWizard
Copy link
Contributor

RetiredWizard commented Aug 5, 2025

I've tested on an old DELL monitor using both 10.0.0-beta 2 and 10.0.0-beta.2-3-gf86bf4c085 (absolute newest) at both 640x480 and 720x400. As expected 720x400 doesn't work with 10.0.0-beta.2 but the PR looks good to me.

@relic-se
Copy link
Contributor Author

relic-se commented Aug 5, 2025

I've tested on an old DELL monitor using both 10.0.0-beta 2 and 10.0.0-beta.2-3-gf86bf4c085 (absolute newest) at both 640x480 and 720x400. As expected 720x400 doesn't work with 10.0.0-beta.2 but the PR looks good to me.

I did switch over to absolute newest and got the same result. Even still, I prefer to run it in 640x480 because it removes the borders and I think it scales better (don't quote me on this).

I've also tested the lower resolutions. They all still work with the UI and this particular monitor. The only remaining issue is that the help text is doubled in size and draws over the first item, but I don't think there's anything we can do about that without introducing a special half size font (not worth it, imo).

Copy link
Contributor

@FoamyGuy FoamyGuy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you! This is a great improvement over the prior hardcoded display behavior.

I tested all 4 displays sizes 720x400, 640x480, 360x200, and 320x240 and all run properly now.

As noted in other comments the smallest sizes 360x200, and 320x240 do result in the upper left help text overlapping on top of the first icon. I'll probably tinker further with the layout and see if we can fit that help text in a single row along the bottom.

@FoamyGuy FoamyGuy merged commit a69d6c8 into adafruit:main Aug 5, 2025
1 check passed
@tannewt
Copy link
Member

tannewt commented Aug 5, 2025

The particular monitor I've been using with the Fruit Jam (an old Dell 1907FPt 4:3 monitor) doesn't support the default aspect ratio of Fruit Jam OS (720x400, 1.8:1).

720x400 isn't really the default. It is only used if the monitor reports supporting it.

Could you run this test code to show what the monitor reports supporting? https://learn.adafruit.com/using-dvi-video-in-circuitpython/monitor-display-capabilities

@relic-se
Copy link
Contributor Author

relic-se commented Aug 5, 2025

Could you run this test code to show what the monitor reports supporting? https://learn.adafruit.com/using-dvi-video-in-circuitpython/monitor-display-capabilities

The absolute newest version of the core fixes the problem on this monitor. I'm not sure of the exact PR to reference. Here's the output of that program if you're still interested:

I2C Present
Device 0x50 found!
Valid EDID signature!
Good EDID checksum!

Supported Display Modes (11 found):
==================================================
  720x400 @70Hz
  640x480 @60Hz
  640x480 @75Hz
  800x600 @60Hz
  800x600 @75Hz
  1024x768 @60Hz
  1024x768 @75Hz
  1280x1024 @75Hz
  1152x864 @75Hz, Aspect: 4:3
  1280x1024 @60Hz, Aspect: 5:4
  1280x1024 @60Hz

Default resolution: 640x480
Preferred resolution: 1280x1024

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants