Here is a nice and straight-forward sawtooth oscillator that I learned from this video.
It is simple and nice. When we come to higher frequencies though, I am dealing with very finicky adjustments that end up breaking down. I can reduce R3 and C1 to get the slope up, but that only works until a few-fold increase, and then I'm at the end. The R1 can be tuned a little, but needs to be 1k for higher speeds. And at some point the difference between 1.5k and 1.8k makes the difference between life (oscillation) vs. death.
Like, even setting C1 to 1nF, with that R1 of 2k, nothing works. Reducing R1 to 1k gets the oscillations back. But we're not at much higher frequency, actually, we're at lower frequency.
We can do C1 = 100pF and R1 = 1kOhm and get about 2.5kHz. But now we're beginning to have non-linear starts and ends of the sawtooth:
and from there it gets only worse:
is it the switching speed of the BJTs that's causing this non-linearitiy? I am surprised that it is happening at frequencies that are still pretty low. Here we are only at 20 kHz, i.e., even if I wanted to use this as an sawtooth for an audio use case (sound synthesizer) I am already stretched to get that right.
Is this circuit known for this limitation or is there some better way to scale it to higher frequencies that I just don't know?
UPDATE: I took the suggestion of using the two diodes instead of R1, and unfortunately it's flat-lining and I can't find a proper C1, R2 and R3 that would make it oscillate.